根据其他列中的值创建具有新值的 pandas 列

create pandas column with new values based on values in other columns

数据框一:

    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

我的问题是如何在数据框 a 中创建一个新列,根据与数据框 a 中的 id 列值的匹配输入来自数据框 b 的描述?所以我最终得到:

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

通过left merge

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 创建用于映射 iddescription 的字典,然后在 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