【发布时间】:2015-04-22 10:13:23
【问题描述】:
有很多关于使用 python 重新排列 CSV 文件的问题,但我找不到以下问题的答案:
我想“合并”特定列上的 csv 文件,以便连接数据。顺便提一下,这让我想起了一个 SQL 连接。 让我们说:
有许多 csv 文件看起来都一样。为简单起见,我们假设每行只有四个项目——三个数据项和一个类别。所以一个文件看起来像:
a,b,c,category1
e,f,g,category2
a,c,c,category3
另一个喜欢:
0,0,0,category1
1,1,1,category1
5,5,5,category2
6,6,6,category2
9,9,9,category4
现在,我想合并这些文件以获得以下结果:
a,b,c,0,0,0,category1
e,f,g,5,5,5,category2
因此,需要以这样一种方式连接行,即每行的项目都被合并,而“类别”项目是连接键,如果没有足够的匹配行,则可能会删除数据。 最好是拥有可变数量的文件,这样不仅可以合并(或合并)两个文件,而且可以通过这种方式合并(或合并)X 个文件。
有没有pythonic方法可以做到这一点?
【问题讨论】:
-
在您的输出示例中,对于
category1,您保留0,0,0,并丢弃1,1,1。这是否意味着您只想保留第一个匹配记录? ---稍后,您介绍了多个文件的主题:您是要仅基于第一个文件内容进行合并还是...您的问题不是一个明确的问题...您应该尝试更准确。跨度> -
很抱歉,如果这仍然不清楚。起初:是的,第一个匹配行很好。这就是为什么我不想使用 unix
join方法。第二:合并将基于在所有文件中找到的类别的最小条目数。如果类别 X 在 file1 中有 20 个实例,在 file2 中有 10 个实例,在 file3 中有 12 个实例,则组合文件中应该有 10 个实例。