如何用Pandas匹配两个CSV的名称并将对应ID写入指定列?
解决方案:用Pandas匹配两个CSV的名称并填充ID
嗨,别担心重复提问或者平台规则的问题,大家都是从新手阶段过来的!既然你已经在日常用Pandas做数据可视化,那这个需求用merge方法就能轻松搞定,正好能巩固你的数据处理技能。
下面是具体的步骤和代码示例:
步骤1:导入Pandas并读取两个CSV文件
先加载Pandas库,然后分别读取文件A和B(注意替换成你本地的文件路径):
import pandas as pd # 读取两个CSV,假设两个文件里的名称列都叫"名称",如果列名不一样要改成实际的 df_a = pd.read_csv("文件A的路径.csv") df_b = pd.read_csv("文件B的路径.csv")
步骤2:匹配名称并填充ID
我们用左连接来合并两个表——这样能保留B文件里的所有行,只把A中匹配到的名称对应的ID填充进去,没匹配到的会显示NaN(你可以后续根据需求处理空值):
# 以df_b为基础,匹配df_a的"名称"列,把A的"ID"列合并到B中 # 这里假设A的ID列名为"ID",如果你的列名不同请自行修改 df_merged = pd.merge(df_b, df_a[["名称", "ID"]], on="名称", how="left")
如果两个文件的名称列名不一样(比如A里叫"姓名",B里叫"名称"),可以用left_on和right_on分别指定:
df_merged = pd.merge(df_b, df_a[["姓名", "ID"]], left_on="名称", right_on="姓名", how="left") # 合并后如果有重复的列(比如这里的"姓名"),可以删掉 df_merged = df_merged.drop("姓名", axis=1)
步骤3:处理可能的重复名称
如果文件A里存在重复的名称(同一个名称对应多个ID),merge后会产生重复行,你可以根据需求去重,比如保留每个名称的第一个匹配ID:
# 先对df_a去重,保留每个名称的第一条记录 df_a_unique = df_a.drop_duplicates(subset="名称", keep="first") # 再进行合并 df_merged = pd.merge(df_b, df_a_unique[["名称", "ID"]], on="名称", how="left")
步骤4:保存结果
最后把处理好的结果保存成新的CSV文件:
df_merged.to_csv("填充好ID的文件B.csv", index=False)
整个流程完全用Python完成,不用依赖Excel,正好能帮你提升Pandas的实际应用能力。如果遇到列名不匹配、空值处理这类细节问题,随时再问就好~
内容的提问来源于stack exchange,提问作者Tristan Salord
相关产品推荐
相关产品推荐

