我有一个数据框:
import pandas as pd
df1 = pd.DataFrame([['Tom', 'good', 3],
['Jack', 'bad', 6],
['Tom', 'average', 9],
['Jerry', 'good', 89],
['Lucy', 'average', 11]
],
columns=['name', 'text', 'day'])
和其他数据框:
df2 = pd.DataFrame([['Tom', 'bad', 55],
['Jack', 'good', 64],
['Mary', 'bad', 92],
['Lucy', 'average', 109]
],
columns=['name', 'text', 'day'])
如果df2['name']
位于df1['name']
,然后是 ' day
的值' 的 df1
应替换为 df2
,这意味着,我得到以下结果:
result = pd.DataFrame([['Tom', 'good', 55],
['Jack', 'bad', 64],
['Tom', 'average', 55],
['Jerry', 'good', 89],
['Lucy', 'average', 109]
],
columns=['name', 'text', 'day'])
我知道update
可以做到这一点,但我想要一个条件替换方法。
最佳答案
只需执行np.where
df1['day'] = np.where(df1['name'].isin(df2['name']), df1['name'].map(df2.set_index('name')['day']),df1['day'])
df1
Out[263]:
name text day
0 Tom good 55.0
1 Jack bad 64.0
2 Tom average 55.0
3 Jerry good 89.0
4 Lucy average 109.0
关于python - 如何使用 pandas 根据另一个数据帧的列的值更新列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73623428/