我们说我有以下两个DataFrame:
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['Johnny', 'Sara', 'Mike']})
df2 = pd.DataFrame({'name': [2, 1, 2]})
如何从df2
中定义的映射更新df1
:
df2 = pd.DataFrame({'name': ['Sara', 'Johnny', 'Sara']})
我已经完成了以下操作,但必须有更好的方法:
id_to_name = {i: name for i, name in zip(df1['id'].tolist(), df1['name'].tolist())}
df2['name'] = df2['name'].map(id_to_name)
答案 0 :(得分:3)
另一种方式:-)我最近学到了
df1.set_index('id').name.get(df2.name)
Out[381]:
id
2 Sara
1 Johnny
2 Sara
Name: name, dtype: object
答案 1 :(得分:2)
您可以将dict
/ map
传递给df2.name.map(dict(df1.values))
(感谢piR的改进!) -
replace
或者,df2.name.replace(df1.set_index('id').name)
,但速度较慢 -
0 Sara
1 Johnny
2 Sara
Name: name, dtype: object
filteredResult = filteredResult.filter(e => e.selectedFields.includes("Red")