Python中匹配DataFrame默认索引与对应标识符的方法
通过默认索引合并两个Pandas DataFrame的方法
刚好碰到过一模一样的需求,要通过Pandas的默认行索引把两个DataFrame对应起来,获取对应的标识符。这里有几个简单好用的方法,你可以根据自己的场景选:
方法1:使用pd.concat()按列合并
因为两个DataFrame的默认索引是完全匹配的,直接用concat指定按列合并(axis=1)就可以自动对齐索引:
import pandas as pd # 构造示例数据 df1 = pd.DataFrame({'id': [1, 2, 3, 4]}) df2 = pd.DataFrame({'id_df2': [1234, 2222, 3333, 3344]}) # 按列合并,自动对齐索引 result = pd.concat([df1, df2], axis=1) print(result)
输出结果就是你想要的:
id id_df2 0 1 1234 1 2 2222 2 3 3333 3 4 3344
方法2:使用pd.merge()指定按索引合并
如果需要更明确地指定合并逻辑(比如后续可能有索引不匹配的情况),可以用merge方法,设置left_index=True和right_index=True来基于索引合并:
import pandas as pd df1 = pd.DataFrame({'id': [1, 2, 3, 4]}) df2 = pd.DataFrame({'id_df2': [1234, 2222, 3333, 3344]}) # 基于左右DataFrame的索引合并 result = pd.merge(df1, df2, left_index=True, right_index=True) print(result)
这个方法的输出和上面完全一致,好处是可以额外添加how参数(比如how='inner'、how='outer')来处理索引不匹配的场景,灵活性更高。
方法3:直接赋值列(适用于索引完全匹配的场景)
如果你能确保两个DataFrame的索引100%对应,没有缺失或错位,直接把df2的列赋值给df1也是最快捷的方式:
import pandas as pd df1 = pd.DataFrame({'id': [1, 2, 3, 4]}) df2 = pd.DataFrame({'id_df2': [1234, 2222, 3333, 3344]}) # 直接将df2的列赋值给df1 df1['id_df2'] = df2['id_df2'] print(df1)
这种方法代码最少,执行效率也最高,但要注意如果索引不匹配的话,会出现NaN值,所以只适合你这种索引完全对齐的情况。
内容的提问来源于stack exchange,提问作者Django0602
相关产品推荐
相关产品推荐

