我有一堆包含大量数据的CSV,我需要更改特定行和列中的数据。我能够通读文件,查找需要更改的行,列,更改数据,但我无法弄清楚如何将更改提交到内存并正确重写CSV
以下代码不会失败,但不正确。它不是提交我对列(col)所做的更改,而是复制我想要更改的行。数据没有变化,现在我只有重复的行,我想要更改。
Map1-Reduce1 -> Map2-Reduce2 -> ... -> MapN-ReduceN
这是需要更改的一位数据的示例:
连接:D14Conn 类型:B2B 尺寸:140 几何:正方形 面积:19600
我上面的代码只是将新行复制到此数据中,而我对col所做的更改未提交 - 如下所示
连接:D14Conn 类型:B2B 尺寸:140 尺寸:140 几何:正方形 面积:19600 面积:19600
答案 0 :(得分:1)
当您分配到col
时,您将分配行中col值的副本。在遍历row
时,您需要继续引用要更改的值的索引,并在该索引处更新row
,以便在调用writer.writerow(row)
时实际上是使用更改的对象进行书写,或使用所需的列创建new_row
。
对于您的重复项,从if块中删除writer.writerow(row)
次调用,它们是多余的。
答案 1 :(得分:0)
您的row
未被更改。您需要使用新的列值制作new_row
并执行writer.writerow(new_row)