基于其他列中的值,使用新值创建pandas列



数据帧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

我的问题是,如何在数据帧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

您可以创建一个dict,用于从数据帧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

通过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

最新更新