簡體   English   中英

在Python中的多個列上連接兩個數據幀

[英]Join two dataframes on multiple columns in Python

我有兩個名為df1和df2的數據幀。

DF1 =

   col1   col2  count
0   1      36   200
1   12     15   200
2   13     17   100

DF2 =

    product_id  product_name
0      1            abc
1      2            xyz
2      3            aaaa
3      12           qwert 
4      13           sed
5      15           qase
6      36           asdf
7      17           zxcv

col1和col2中的條目是df2中的product_id。

我想創建一個新的數據幀'df3',它包含以下列和條目。

DF3 =

   col1 | col1_name | col2 | col2_name | count
0   1   |   abc     |   36 |    asdf   |  200
1   12  |   qwert   |   15 |    qase   |  200
2   13  |   sed     |   17 |    zxcv   |  100

即在df2 product_id等於col1col2值的任何地方添加col1_namecol2_name

是否可以這樣做:

df3 = pd.concat([df1, df2], axis=1)

我對Pandas df和Python的了解是初學者的。 有辦法嗎? 提前致謝。

我想你可以使用df2生成的dict map ,然后按sort_index對列名進行sort_index

d = df2.set_index('product_id')['product_name'].to_dict()
print (d)
{1: 'abc', 2: 'xyz', 3: 'aaaa', 36: 'asdf', 17: 'zxcv', 12: 'qwert', 13: 'sed', 15: 'qase'}

df1['col1_name'] = df1.col1.map(d)
df1['col2_name'] = df1.col2.map(d)
df1 = df1.sort_index(axis=1)
print (df1)
   col1 col1_name  col2 col2_name  count
0     1       abc    36      asdf    200
1    12     qwert    15      qase    200
2    13       sed    17      zxcv    100

df1 = df1.drop(['col1','col2'], axis=1)
print (df1)
  col1_name col2_name  count
0       abc      asdf    200
1     qwert      qase    200
2       sed      zxcv    100

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM