如何用Python基于Key列对比两个CSV文件(替代Excel VLOOKUP)
实现方案
当然可以用Python实现这个需求,用pandas库就能轻松完成和Excel VLOOKUP类似的匹配逻辑,下面是具体的代码和步骤:
步骤1:安装依赖(如果未安装)
如果你的环境里还没有pandas,先执行安装命令:
pip install pandas
步骤2:编写Python代码
创建一个.py文件(比如csv_match.py),写入以下代码:
import pandas as pd # 读取两个CSV文件 abc_df = pd.read_csv('abc.csv') xyz_df = pd.read_csv('xyz.csv') # 把abc.csv里的uid和isDisabled转为字典,方便快速查找 abc_status_dict = abc_df.set_index('uid')['isDisabled'].to_dict() # 定义逻辑生成abc_status列 def generate_abc_status(row): user_id = row['uid'] # 先判断uid是否在abc.csv中存在 if user_id not in abc_status_dict: return 'Does not exist in ABC' # 存在的话判断状态 abc_status = abc_status_dict[user_id] if abc_status == 'Disabled': return 'Disabled in ABC' else: return 'NOCHANGE' # 给xyz_df添加新列 xyz_df['abc_status'] = xyz_df.apply(generate_abc_status, axis=1) # 导出结果到output.csv,保持引号格式和原文件一致 xyz_df.to_csv('output.csv', index=False, quotechar='"', quoting=1)
代码说明
- 用字典构建
uid到isDisabled的映射,比直接用DataFrame合并更高效,适合数据量较大的场景 - 自定义函数
generate_abc_status处理每一行的逻辑,完全对应你需要的三种输出情况 - 导出时设置
quoting=1会给所有字段加上双引号,和你期望的输出格式完全匹配
运行代码后,就能得到你想要的output.csv文件,和Excel处理的结果一致。
内容的提问来源于stack exchange,提问作者Blue
相关产品推荐
相关产品推荐

