使用python-pandas对比两个结构相同的文件差异,并输出差集文件的方法

最近在处理数据相关需求,遇到一个问题:两个文件,fileA.csv和fileB.csv,结构相同,fileA包含fileB的内容,但是需要得到二者的差集,输出新的文件fileC。

经过查询资料,发现pandas可以很好的处理数据相关需求,经常处理大数据的小伙伴对这个神器肯定不陌生。

我第一次接触,所以记录一下使用经历,以后再遇到类似需求,可以多研究下。

import pandas as pd

# 读取文件 A
dataA = pd.read_csv('./temp/fileA.csv')

# 读取文件 B
dataB = pd.read_csv('./temp/fileB.csv')

# 合并数据框,并标记每个值的来源,注:Column1,Column2 为csv文件的列名,即文件首行数据的值
merged = dataA.merge(dataB, on=['Column1', 'Column2'], how='left', indicator=True)

# 筛选出只在文件 A 中存在的行
diff = merged[merged['_merge'] == 'left_only']

# 删除标记列
diff = diff.drop('_merge', axis=1)

# 将差值写入新文件 C
diff.to_csv('./temp/fileC.csv', index=False)

简单解释下上面的代码:

1. 读取文件 fileA 和 fileB的内容

2. 使用 merge() 函数将文件 A 和文件 B 按照Column1和Column2列进行合并

on=['Column1', 'Column2']  合并的列名称

how='left' 表示以左边的数据为准(即fileA数据),这个参数可以理解为SQL中的left join

indicator=True 用来标记文件中每个值的来源

3. 通过标记列 _merge,筛选出只在文件 A 中存在的行

4. 删除标记列 _merge

5. 将差集结果写入新的 CSV 文件 fileC

同理,pandas还可以处理excel、txt文本等文件,具体的处理方法,感兴趣的小伙伴可以自己搜索下。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值