Pandas合并含同名列的DataFrame:如何同时按Country和Year合并
解决Pandas同时按两个同名列合并的问题
当然可以!你完全能通过pd.merge()同时按Country和Year这两个同名列完成合并,之前出现语法错误大概率是参数的格式写错了。
正确的写法(同名列场景)
如果两个DataFrame里的合并列名完全一致(都是Country和Year),只需要把这两个列名放到一个列表里,传给on参数就行:
merged = pd.merge(left=df, right=df1, on=['Country', 'Year'])
这样合并后,Country和Year只会保留一列,不会出现Year_x/Year_y或者Country_x/Country_y的后缀——因为它们是合并的依据键,Pandas会自动识别并保留一份。
为什么之前单独合并会出现后缀?
你之前只按Year或Country单个列合并时,另一个列(比如按Year合并时的Country)在两个DataFrame中都存在,Pandas无法区分,就会自动给它们加上_x(来自左表df)和_y(来自右表df1)的后缀来区分。
额外补充:列名不同的场景(如果以后需要)
万一哪天遇到两个表的合并列名不一样的情况(比如左表是Country,右表是Nation),可以分别用left_on和right_on传对应的列表:
merged = pd.merge(left=df, right=df1, left_on=['Country', 'Year'], right_on=['Nation', 'Year'])
内容的提问来源于stack exchange,提问作者Foreverlearning
相关产品推荐
相关产品推荐

