pandas按列执行inner merge时如何保留第一个DataFrame的原始索引
解决方法
merge操作默认会重置结果的索引,你只需要提前把左表的原始索引保存为普通列,合并完成后再恢复为索引即可,完整代码如下:
# 步骤1:将左表的原始索引转为普通列保存 ClientFileDf = ClientFileDf.reset_index(names="original_index") # 步骤2:执行原有的合并逻辑 df2 = pd.merge(ClientFileDf, df_CPCodeDF, how='inner', left_on=['CPCode','CPPAN'], right_on = ['HEDGE_CP_CODE','HEDGE_PAN_NO']) # 步骤3:删除多余列,恢复原始索引 df2.drop(['HEDGE_CP_CODE','HEDGE_PAN_NO'], axis=1, inplace=True) df2 = df2.set_index('original_index') # 可选:清空索引名,和原ClientFileDf的索引格式保持一致 df2.index.name = None
如果你的pandas版本低于1.5.0,不支持reset_index的names参数,可以替换第一步的代码为:
ClientFileDf['original_index'] = ClientFileDf.index
运行后最终得到的df2索引就是你需要的原始索引1和3。
内容的提问来源于stack exchange,提问作者Alok Sharma
相关产品推荐
相关产品推荐

