Skip to main content
 首页 » 编程设计

python之查找两个 csv 文件中列名之间的差异

2025年05月04日14davidwang456

我有两个 csv 文件,它们的第一行是列的名称。 我想diff他们的列名集,即找出

  • 两个文件是否有相同的列名集(列的顺序无关紧要),以及

  • 如果他们不这样做,一个文件中有什么列名而另一个文件中没有..

是否可以使用 awk 或 Linux 中的其他文本处理实用程序来做到这一点? 还是使用 Python 更好?

例如假设一个文件看起来像

col2,col1,col3 
1,2,3 
4,5,6 

另一个文件看起来像

col3,col2,col4 
2,3,4 
5,6,7 

那么在第一个文件中但在第二个文件中不存在的列名是col1,在第二个文件中但不在第一个文件中的列名是col4。

请您参考如下方法:

在 Python 中,首先使用 csv.reader 保存每个文件的标题行:

import csv 
with open('one.csv', newline='') as f1, open('two.csv', newline='') as f2: 
    one = set(next(csv.reader(f1))) 
    two = set(next(csv.reader(f2))) 

然后就可以使用set操作了。

是否相同:

one == two 

two 有但 one 没有的列:

two - one 

one 有但 two 没有的列:

one - two 

为了好玩,两个文件都有的列:

one & two 

以及任一文件中的所有可用列:

one | two