Pandas 基于其他列中的值创建具有新值的列
数据帧a: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
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