Pandas使用df.merge时如何保留数据框的原始间距?
Pandas merge保留原始列顺序的方法
嘿,这个问题其实很容易搞定,甚至多数情况下默认的merge行为就刚好符合你的需求!
默认行为就满足你的例子需求
当你执行df1.merge(df2, on=['C'])时,Pandas的默认规则是:保留左数据框(df1)的原始列顺序,然后追加右数据框(df2)中除了合并键(这里是C)之外的所有列。
拿你的例子来说:
- df1的列是
X, a, b, C - df2的列是
C, D
合并后,结果的列顺序会自动是X, a, b, C, D,完全就是你想要的样子,不需要额外设置任何参数。
手动控制列顺序的场景(如果默认不满足时)
如果遇到特殊情况——比如df2里有和df1重名的非合并列,或者你需要自定义更复杂的列顺序——可以手动指定最终的列列表:
import pandas as pd # 假设你的df1和df2已经定义好了 merged_df = df1.merge(df2, on=['C']) # 构造想要的列顺序:df1的原始列 + df2中独有的列 desired_cols = df1.columns.tolist() + [col for col in df2.columns if col not in df1.columns] # 重新设置列顺序 merged_df = merged_df[desired_cols]
或者用更简洁的Pandas索引操作来获取df2的独有列:
desired_cols = df1.columns.tolist() + df2.columns.difference(df1.columns).tolist() merged_df = merged_df[desired_cols]
这样就能确保合并后的列完全遵循你想要的原始顺序啦。
内容的提问来源于stack exchange,提问作者EA00
相关产品推荐
相关产品推荐

