使用循环将CSV数据提取到对象中

时间:2019-03-16 13:28:40

标签: python pandas loops csv

我的问题很难解释,我不确定是否可以按照我的要求做,但我会尽力解释。

基本上,我有一个包含数据的CSV文件,我想提取特定的单元格并将其设置为对象中的值。 CSV中的每一行都包含有关单个项目的信息。目前,我已经使用pandas库和df.iloc [0] [1]等进行了硬编码。但是,我希望能够遍历整个CSV并提取单个单元格并将其添加到多个对象中,因此,我不必手动对每一行进行硬编码。

希望,代码将有助于显示我的意思:

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

我的课:

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

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

当前从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])

我仍然希望能够为每个选项选择单独的值,例如print(o1.name),o6.type等。

2 个答案:

答案 0 :(得分:1)

这将为您提供Option对象的列表:

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

options_list = options.values.tolist()

答案 1 :(得分:1)

您需要遍历从0到文档中最大行的每一行。对于每次迭代,您都将创建Option类的新实例。

这是一些示例代码:

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)