如何一次读取两行输入CSV,将一些值合并到新的一行中,然后将该行写入新的CSV?
在下面的输入中,我想读取两行,从第二行中取出price 1,并在一个新的组合行中将其设置为price 2,然后对接下来的两行重复此操作:
输入
date, name, qt, price1
9/12/22, AB, 2, 5.00
9/12/22, AB, 2, 5.08
9/12/22, BC, 1, 2.00
9/12/22, BC, 1, 2.03
新csv
第一次
缺少Adrian的答案:
- 导入csv
- #换行需要python 3
- csv必须是UTF-8,并且标题必须匹配
3条答案
按热度按时间bnlyeluc1#
e4eetjau2#
使用
pandas
会让你的生活更轻松。output.csv
为:ryevplcw3#
pythonscsv阅读器可以轻松地一次读取任意数量的行。
读取器(包括csv.reader和csv.DictReader)都是迭代器,这意味着我们可以使用next()函数手动获取一行,就像我们可以使用
elem = next(my_iterator)
获取任何迭代器中的下一个元素一样:为我们提供:
这种方法可以通过一个for循环来驱动迭代,for循环总是给予当前行组中的“第一行”,在循环中,我们需要该组中的所有后续行:
这种方法假设你的输入有一个头,然后行计数是组大小的偶数倍。如果你的输入不符合这一点,你会得到一个StopIteration异常,看起来像这样(在Python 3.11中):
如果可能的话,可以添加异常处理:
最后,我们可以将此概念扩展到逻辑组中的任意行数,例如每组3行:
一个