[英]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
等於col1
和col2
值的任何地方添加col1_name
和col2_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.