Pandas合并DataFrame遇多行匹配及KeyError问题求助
解决Pandas合并时的KeyError问题
错误原因
你写的df5["American"]提取的是单独的Series对象,这个对象只包含American列的数据,原本的Title列已经被丢弃了。所以当你在merge里指定right_on=["Title"]时,右侧的数据源里根本找不到Title列,自然触发KeyError。
正确解决方案
方法1:保留匹配键列提取DataFrame
提取df5时,同时保留Title和American两列(用双重括号[[]]),这样右侧数据源就有匹配所需的Title列了:
df4.merge(df5[["Title", "American"]], left_on="Title", right_on="Title", how="left")
方法2:用索引匹配(更简洁)
如果df5里的Title没有重复值,可以把它设为索引,再用join方法合并:
df4.join(df5.set_index("Title")["American"], on="Title")
方法3:用映射快速填充
同样适合df5中Title唯一的场景,先把df5转成标题到分类的字典,再映射到df4里:
# 构建标题到American的映射字典 american_dict = df5.set_index("Title")["American"].to_dict() # 给df4新增American列并填充 df4["American"] = df4["Title"].map(american_dict)
额外注意
合并前务必检查两个DataFrame的Title列内容是否完全一致(比如大小写、空格、特殊符号),如果存在格式差异,会导致部分行匹配不到,出现NaN值。
内容的提问来源于stack exchange,提问作者claudiae
相关产品推荐
相关产品推荐

