如果我合并兩個資料框,如圖所示
df1=pd.DataFrame({"Name": ["Alex","Ben","Cat","Dog"],'A':[1,2,3,3],'B':[2,3,4,4]})
df2=pd.DataFrame({"Name": ["Alex","Ben","Cat","Dog"],'A':[2,3,4,4],'B':[1,2,3,3]})
df_merged = pd.merge(df1,df2, on = "Name", suffixes= ["L","R"])
這就是我合并的資料框df_merged的樣子
Name AL BL AR BR
0 Alex 1 1 2 2
1 Ben 2 3 3 2
2 Cat 3 4 4 3
3 Dog 3 4 4 3
但是有沒有辦法讓df_merged自己看起來像
Name AL AR BL BR
0 Alex 1 2 1 2
1 Ben 2 3 3 2
2 Cat 3 4 4 3
3 Dog 3 4 4 3
其中資料框的列彼此相鄰。
這只是出于美觀原因而不是其他原因的興趣。我在任何地方都找不到它的例子。
uj5u.com熱心網友回復:
您需要更改列的順序,這是動態方法:
#get all columns names in both df, removed Name used for key in merge
same = df1.columns.intersection(df2.columns, sort=False).difference(['Name'])
#generate columns in order
cols = [f'{a}{b}' for a in same for b in ['L','R']]
#get different like `cols` from merged df and add cols in order
order = df_merged.columns.difference(cols, sort=False).union(cols, sort=False)
#changed order by list
df = df_merged[order]
print (df)
Name AL AR BL BR
0 Alex 1 2 2 1
1 Ben 2 3 3 2
2 Cat 3 4 4 3
3 Dog 3 4 4 3
手動接近:
df = df_merged[['Name', 'AL', 'AR', 'BL', 'BR']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/466657.html
