如何合并DataFrame并让匹配列并排显示?
实现方法
首先执行常规的合并操作:
import pandas as pd df1 = pd.DataFrame(data={'key': ['a', 'b'], 'col1': [1, 2], 'col2': [3, 4]}) df2 = pd.DataFrame(data={'key': ['a', 'b'], 'col1': [5, 6], 'col2': [7, 8]}) merged_df = pd.merge(df1, df2, on=['key'])
接下来可以通过两种方式调整列顺序,实现对应列并排显示的需求:
方法一:手动指定列顺序(适合列数量少的场景)
直接写出期望的列名列表,对合并后的DataFrame重新索引:
desired_order = ['key', 'col1_x', 'col1_y', 'col2_x', 'col2_y'] merged_df = merged_df[desired_order] print(merged_df)
输出结果:
key col1_x col1_y col2_x col2_y 0 a 1 5 3 7 1 b 2 6 4 8
方法二:自动生成列顺序(适合列数量多的场景)
如果有大量重复列名,手动指定效率低,可以通过提取列前缀自动生成成对的列顺序:
# 提取除key外的列名前缀,去重后保留原DataFrame的列顺序 cols_without_key = [col.split('_')[0] for col in merged_df.columns if col != 'key'] unique_cols = list(set(cols_without_key)) unique_cols.sort(key=lambda x: list(df1.columns).index(x)) # 构建目标列顺序 desired_order = ['key'] for col in unique_cols: desired_order.extend([f'{col}_x', f'{col}_y']) # 重新索引调整列顺序 merged_df = merged_df[desired_order] print(merged_df)
这种方式无需手动维护列名列表,不管新增多少重复列,都能自动按列名_x、列名_y的成对方式排列。
内容的提问来源于stack exchange,提问作者Jengels
相关产品推荐
相关产品推荐

