Python 如何在没有列顺序的情况下基于两列合并dataframe?
我遇到了以下问题。我想合并多列上的两个数据帧。示例数据帧如下所示:df1:Python 如何在没有列顺序的情况下基于两列合并dataframe?,python,pandas,dataframe,Python,Pandas,Dataframe,我遇到了以下问题。我想合并多列上的两个数据帧。示例数据帧如下所示:df1: df1: playerA playerB Weight kim lee 1 jackson kim 3 dan lee 4 df2: name1 name2 score dan lee 11 dan kim 23 jackson kim 44 lee
df1:
playerA playerB Weight
kim lee 1
jackson kim 3
dan lee 4
df2:
name1 name2 score
dan lee 11
dan kim 23
jackson kim 44
lee kim 35
Jackson lee 26
lee dan 27
我想基于两列合并这两个数据帧。
df1[['playerA','playerB']],df2[['name1','name2']]
但问题是,我想合并这两个数据帧,而不考虑列的顺序
我试过了
result=pd.merge(df1,df2,on=df1[['playerA','playerB']],df2[['name1','name2']])
但它不起作用
这就是我想要的
df1:
playerA playerB Weight score
kim lee 1
jackson kim 3
dan lee 4
I want to merge df1 and df2 by using two columns from each data frame without considering the order
(df1[['playerA','playerB']],df2[['name1','name2']])
df2_merge:
name1 name2 score weight
dan lee 11 4
kim lee 23 1
jackson kim 44 3
lee kim 35 1
kim jacson 26 3
lee dan 27 4
And then I want to delete the row which has the same name list.
Thus, here is my final wishes
df2_merge_ final:
name1 name2 score weight
dan lee 11 4
kim lee 23 1
jackson kim 44 3
我不知道还能尝试什么。有什么建议吗?谢谢:)您可以添加由排序值填充的新列,然后使用
merge
删除不必要的列:
df1[['a','b']] = np.sort(df1[['playerA','playerB']], axis=1)
df2[['a','b']] = np.sort(df2[['name1','name2']], axis=1)
result = pd.merge(df1, df2, on=['a','b']).drop(['a','b','name1','name2'], axis=1)
print (result)
playerA playerB Weight score
0 kim lee 1 35
1 jackson kim 3 44
2 dan lee 4 11
3 dan lee 4 27
如果需要第一个唯一的组合,请添加:
哇,谢谢你的帮助!
df1[['a','b']] = np.sort(df1[['playerA','playerB']], axis=1)
df2[['a','b']] = np.sort(df2[['name1','name2']], axis=1)
df2 = df2.drop_duplicates(['a','b'])
result = pd.merge(df1, df2, on=['a','b']).drop(['a','b','name1','name2'], axis=1)
print (result)
playerA playerB Weight score
0 kim lee 1 35
1 jackson kim 3 44
2 dan lee 4 11