如何用Python匹配另一CSV的ID列并追加至目标CSV?
解决方法
你的需求核心是给csv1新增一列,标记出哪些ID在csv2中存在——存在则显示对应ID,不存在显示N/A。之前的merge写法会把csv2的所有列都合并进来,不符合预期,换下面两种方式都能实现:
方法一:调整merge参数实现
只合并csv2的ID列,并重命名新增列:
import pandas as pd # 读取两个CSV文件 TABLE1 = pd.read_csv('csv1.csv') TABLE2 = pd.read_csv('csv2.csv') # 仅提取csv2的ID列进行左合并,并重命名新增列 merged_df = pd.merge(TABLE1, TABLE2[['ID']], on='ID', how='left') merged_df.rename(columns={'ID_y': 'ID from csv2'}, inplace=True) # 将空值替换为N/A merged_df['ID from csv2'] = merged_df['ID from csv2'].fillna('N/A') # 保存处理后的文件 merged_df.to_csv('处理后的csv1.csv', index=False)
方法二:用map更简洁高效
直接通过映射判断ID是否存在:
import pandas as pd TABLE1 = pd.read_csv('csv1.csv') TABLE2 = pd.read_csv('csv2.csv') # 把csv2的ID转为集合,提升查找效率 csv2_id_set = set(TABLE2['ID']) # 新增目标列:匹配到就显示ID,否则显示N/A TABLE1['ID from csv2'] = TABLE1['ID'].apply(lambda x: x if x in csv2_id_set else 'N/A') # 保存结果 TABLE1.to_csv('处理后的csv1.csv', index=False)
两种方法都能得到你想要的结果,方法二更适合数据量较大的场景,查找速度更快。
内容的提问来源于stack exchange,提问作者e417927
相关产品推荐
相关产品推荐

