python - 使用 Python 比较 2 个 CSV 文件
问题描述
我有 2 个 CSV 文件,其中员工 ID 是主键。在新文件中会有一些更改,例如电话号码或地址更改。我正在尝试使用 Dict 比较。请指导我。
Old file -> 12345, Peter, 765 darwin BLVD, 326-967-4330
New file -> 12345, Peter, 765 darwin LLVD, 339-440-3330`
我想使用 emp ID 逐行比较这两个文件。
解决方案
如果您不介意安装pandas,这是一种方法:
import pandas as pd
from io import StringIO
old = '''\
empid, name, address, phone
12345, Peter, 765 darwin BLVD, 326-967-4330
23456, John, 123 Sesame st, 123-456-7890
'''
new = '''\
empid, name, address, phone
12345, Peter, 765 darwin LLVD, 339-440-3330
23456, John, 123 Sesame st, 123-456-7890
'''
old_df = pd.read_csv(StringIO(old), skipinitialspace=True)
new_df = pd.read_csv(StringIO(new), skipinitialspace=True)
df = old_df.merge(new_df, on=['empid'], suffixes=('_old', '_new'))
print(df.query('name_old != name_new or address_old != address_new or phone_old != phone_new'))
推荐阅读
- arrays - 动态添加输入元素以形成反应
- javascript - 获取错误 DOMException:运行扩展程序以将文本从 PDF 复制到剪贴板时,文档未聚焦
- c++ - 关于真正使用抽象类的问题
- c# - 如何根据 C# 中的模型数量动态构造 JSON 键名?
- swift - 为什么 Swift 会在 stringFromData 的开头意外插入“Optional”?
- c# - 如何在 Azure Function 中禁用强制 https 重定向?
- reactjs - React MobX - 装饰器 + useObserver 不会重新渲染
- amazon-web-services - AWS 网络负载均衡器和使用 AWS Fargate 的 TCP 流量
- ios - 这些结构标识符之间有什么不同
- node.js - 带有等待和承诺的 useMutation 问题