Pandas 基于其他列中的值创建具有新值的列

Pandas 基于其他列中的值创建具有新值的列,pandas,multiple-columns,Pandas,Multiple Columns,数据帧a: id value ------------------------------- 0 231 9243 1 392 81139 2 493 896546 3 879 31 数据帧b: id description colour ------------------------------- 0 231 football brown 1 392 bat white 2 556 chicke

数据帧a:

    id    value
-------------------------------
0   231   9243
1   392   81139
2   493   896546
3   879   31
数据帧b:

   id   description  colour
-------------------------------
0  231  football     brown
1  392  bat          white
2  556  chicken      yellow 
3  493  tennis ball  yellow
4  119  pig          pink
5  879  cricket ball red
我的问题是如何在dataframe a中创建一个新列,该列根据与dataframe a中id列值的匹配从dataframe b输入描述?因此,我最终得出以下结论:

    id    description    value    
-------------------------------
0   231   football        9243
1   392   bat             81139
2   493   tennis ball     896546
3   879   cricket ball    31

通过左合并

df1 = df1.merge(df2[['id','description']], on='id', how='left')
输出

    id   value   description
0  231    9243      football
1  392   81139           bat
2  493  896546   tennis_ball
3  879      31  cricket_ball

您可以从数据帧
b
创建映射
id
description
的dict,然后在
id
列的数据帧
a
上使用
.map()
,如下所示:

b_dict = dict(zip(b['id'], b['description']))
a['description'] = a['id'].map(b_dict).fillna('')
结果:

print(a)

    id   value   description
0  231    9243      football
1  392   81139           bat
2  493  896546   tennis ball
3  879      31  cricket ball