python pandas 合并后更改顺序和列名

python pandas change order and column name after merge

我合并了两个具有多个重叠列的数据框。我想并排放置这些列。

merge = df1.merge(df2)

例如,当前输出:

YEAR_x,DATE_x,MAX_x,MIN_x,YEAR_y,DATE_y,MAX_y,MIN_y

我希望输出为:

YEAR, YEAR_auto, DATE, DATE_auto, MAX, MAX_auto, MIN, MIN_auto

我有超过 150 列,所以我不想手动完成。我该怎么做?

使用 pd.mergesuffixes 参数:

merge = df1.merge(df2[set(df2) & set(df1)], suffixes=('', '_auto'))

将您的列排序为 df1:

cols = sorted(merge.columns, key=lambda x: df1.columns.get_loc(x.split('_')[0]))

示例:

>>> merge
   YEAR        DATE  MAX  MIN  YEAR_auto   DATE_auto  MAX_auto  MIN_auto
0  2021  2021-08-06  100    0       2020  2020-08-06        50        20

>>> merge[cols]
   YEAR  YEAR_auto        DATE   DATE_auto  MAX  MAX_auto  MIN  MIN_auto
0  2021       2020  2021-08-06  2020-08-06  100        50    0        20