我试图从我的csv文件中读取我的,迭代它以找到某些字符串,然后添加另一行和列,如果找到了所述字符串,则添加新字符串。 例如,我试图遍历该文件以查找字符串面粉(但数据类型表示其对象,我假定为字符串值),如果在该列中找到面粉,我可以附加一个名为Allergon1的新行,并将其命名为麸质。计划是对更多的过敏原做同样的事情。如过敏原2将鸡蛋等,下面是我到目前为止
CSV看起来像这样。它太大了,我无法在这里输入,但这里有一个指向原始csv文件的链接enter link description here
本节允许我添加一个名为Allergon1的新行,并在列中插入“面粉”。当使用时,它自身工作良好。testing.csv只是我在本地制作的一个文件,因此我可以测试结果
input_file = pd.read_csv('recipes.csv')
input_file['Allergen2'] = 'flour'
input_file.to_csv('testing.csv', index=False)
这就是我到目前为止所做的,只是一个基本的迭代。我尝试了pandas和python的不同变体来读取csv文件
input_file = csv.DictReader(open('recipes.csv'))
for row in input_file:
if ('flour') in row.values():
input_file['Allergen100'] = 'Gluten'
input_file.to_csv('testing.csv', index = False)
我的问题是迭代工作得很好,它会打印csv中的每一行。我只是不知道如何在if语句中使用上面的addnewrow和column段。我得到的错误是
TypeError: 'DictReader' object does not support item assignment
有人知道这意味着什么,我如何解决它吗
csv模块是一个非常基本的模块,不包括熊猫的任何奇特方面。特别是,csv.DictReader实际上不向内存写入任何内容,因此没有要更新的数组(与pandas不同);相反,csv.DictReader只返回csv文件的每一行,一次返回一行。如果不将这些行保存到新变量,则它们将被丢弃。在需要处理100 GB csv文件但只有10 GB RAM的情况下,csv模块将非常有用。csv模块允许您逐行读取csv文件,并根据所读内容执行操作。另一方面,Pandas会尝试将整个csv文件打开到内存中,这允许您在重写新的csv文件之前动态更新内存
如果将csv.DictReader包装在一个列表()中,您将遍历所有行并将整个文件读入内存
相关问题 更多 >
编程相关推荐