Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:比较CSV中的行,并将行的部分附加到前面的行中_Python_Csv - Fatal编程技术网

Python:比较CSV中的行,并将行的部分附加到前面的行中

Python:比较CSV中的行,并将行的部分附加到前面的行中,python,csv,Python,Csv,我有一个CSV文件,它列出了单个事务的多个记录。每个事务都有一个ID,可以出现在两到16行之间的任意位置。每行都有一个该行特有的字段(信息)。下面是一个简化的数据集。我正在尝试找出如何将CSV的第一行读入一个新文件,然后检查第二行。如果两个[0]字段匹配,我将获取所需的字段并将它们附加到第一行,然后检查下一行的[0]。如果[0]字段不匹配,它需要是新闻文件中的新行,然后我开始对照该行的[0]值检查[0]字段 输入数据 0987, A, info1, apple 0987, A, info2, a

我有一个CSV文件,它列出了单个事务的多个记录。每个事务都有一个ID,可以出现在两到16行之间的任意位置。每行都有一个该行特有的字段(信息)。下面是一个简化的数据集。我正在尝试找出如何将CSV的第一行读入一个新文件,然后检查第二行。如果两个[0]字段匹配,我将获取所需的字段并将它们附加到第一行,然后检查下一行的[0]。如果[0]字段不匹配,它需要是新闻文件中的新行,然后我开始对照该行的[0]值检查[0]字段

输入数据

0987, A, info1, apple
0987, A, info2, apple
0987, B, info3, apple
0987, B, info4, apple
0987, B, info5, apple
0765, A, info6, orange
0765, A, info7, orange
0765, B, info8, orange
0589, A, info9, apple
0589, B, info10, apple
我需要的是:

0987, info1, info2, apple, info3, info4, info5
0765, info6, info7, orange, info8
0589, info9, apple, info10

我还可以使用一种解决方案,只需在第一个文件的末尾追加相关行,因为我知道如何将需要的字段遍历并切片到一个新文件中。这是为了确保我得到了正确的行组合,这让我感到困惑-这可能意味着这是愚蠢的简单,我只是盯着这个太久了

我认为最好的方法是使用
defaultdict(set)

或者,您可以使用以下命令,而不是
名称、*props=line.split()

l = line.split()
name, props = l[0], l[2:]

对于Python 2。

使用字典,将csv文件读入数组,使用该输入数组中的第一个索引值作为字典键,字典值将是包含在该键下找到的所有关键字的数组。你还没有写任何代码。。无法帮助您进一步创建thanksbuild dictionary,其中键为数字,值列表(如果您想要唯一的项,可以设置),您可以在其中附加/添加csv中的第3和第4个元素
collections.defauldict
可能会帮助您避免
keyError
。谢谢-这让我找到了正确的方向。我知道这可能是我缺少的一些简单的东西。“name,389;,*props=line.split()”上出现语法错误,那么您可能正在使用python 2。这是使用Python3运行的。
l = line.split()
name, props = l[0], l[2:]