Mon problème est assez difficile à expliquer et je ne sais pas s'il est même possible de faire ce que je demande, mais je ferai de mon mieux pour l'expliquer.

Fondamentalement, j'ai un fichier CSV avec des données et je veux extraire des cellules spécifiques et les définir comme valeur dans un objet. Chaque ligne du CSV contient des informations sur un élément individuel. Actuellement, je l'ai codé en dur à l'aide de la bibliothèque pandas et en faisant df.iloc [0] [1], etc. Cependant, je veux pouvoir parcourir tout le CSV et extraire des cellules individuelles et les ajouter à plusieurs objets, donc je n'ai pas à coder en dur chaque ligne manuellement.

Espérons que le code aidera à montrer ce que je veux dire:

df = pd.read_csv('Options.csv')

Ma classe:

    class Option:
    def __init__(self, type, name, S, K):

        self.type = type
        self.name = name
        self.S = S
        self.K = K 

Extraction actuelle de CSV:

o1 = Option(df.iloc[0, 1], df.iloc[0][2], df.iloc[0][3], df.iloc[0][4])
o2 = Option(df.iloc[1, 1], df.iloc[1][2], df.iloc[1][3], df.iloc[1][4])

Etc.

Je veux toujours pouvoir sélectionner les valeurs individuelles de chaque option, par exemple, imprimer (o1.name), o6.type, etc.

2
Jimmy 16 mars 2019 à 16:28

2 réponses

Meilleure réponse

Vous devez itérer sur chaque ligne de 0 au maximum de lignes dans le document. Pour chaque itération, vous créez une nouvelle instance de la classe Option.

Voici un exemple de code:

df = pd.read_csv('Option.csv')

row_amount = 5 # put the amount of rows that the csv file contains here or get it with pandas 

options = []

for row in range(0, row_amount):
    option = Option(df.iloc[row, 1], df.iloc[row, 2], df.iloc[row, 3], df.iloc[row, 4])
    options.append(option)
1
Cobra_8 16 mars 2019 à 13:45

Cela vous donnera une liste de vos objets Option:

options = df.apply(lambda x: Option(x[1], x[2], x[3], x[4]), axis=1)

options_list = options.values.tolist()
1
dzang 16 mars 2019 à 13:37