Pandas,如何合并两个 Dataframe 与多列ID

7lrncoxx  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(221)

对不起,我是Pandas新手,我很吃力。基本上,我有两个数据集df 1:
| 站点|样品数量|
| - -|- -|
| A级|三个|
| B| 2个|
| C类|一个|
DF2:
| 站点1|站点2| nb链接|
| - -|- -|- -|
| A级|B|三个|
| A级|C类|一个|
我想得到的是输出:
| 站点1|站点2| nb链接|样本数量研究中心1|样本数量研究中心2|
| - -|- -|- -|- -|- -|
| A级|B|三个|三个|2个|
| A级|C类|一个|三个|一个|
我尝试了几种方法:
print(pd.merge(df2,df1 ,left_on='sites1',right_on=['sites']))
但是我离我想得到的结果还很远。
提前感谢您的帮助。

noj0wjuj

noj0wjuj1#

使用pandas.DataFrame.merge.rename()的单行程序

df_new = df2.merge(df1, left_on='sites1', right_on='sites', how='left').merge(df1, left_on='sites2', right_on='sites', how='left')[['sites1', 'sites2', 'nb links', 'nb samples_x', 'nb samples_y']].rename(columns={'nb samples_x': 'nb samples sites1', 'nb samples_y': 'nb samples sites2'})

[Out]:

  sites1 sites2  nb links  nb samples sites1  nb samples sites2
0      A      B         3                  3                  2
1      A      C         1                  3                  1

备注

1.让我们分解一下,以便更容易理解:
1.首先合并两个 Dataframe

df_new = df2.merge(df1, left_on='sites1', right_on='sites', how='left').merge(df1, left_on='sites2', right_on='sites', how='left')

[Out]:

  sites1 sites2  nb links sites_x  nb samples_x sites_y  nb samples_y
0      A      B         3       A             3       B             2
1      A      C         1       A             3       C             1

1.仅选择要考虑的列

df_new = df_new[['sites1', 'sites2', 'nb links', 'nb samples_x', 'nb samples_y']]

[Out]:

  sites1 sites2  nb links  nb samples_x  nb samples_y
0      A      B         3             3             2
1      A      C         1             3             1

1.重命名列

df_new.columns = ['sites1', 'sites2', 'nb links', 'nb samples sites1', 'nb samples sites2']

[Out]:

  sites1 sites2  nb links  nb samples sites1  nb samples sites2
0      A      B         3                  3                  2
1      A      C         1                  3                  1

相关问题