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.merge
和 suffixes
参数:
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
我合并了两个具有多个重叠列的数据框。我想并排放置这些列。
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.merge
和 suffixes
参数:
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