python - 如何使用 pandas 根据另一个数据帧的列的值更新列的值?

标签 python python-3.x pandas

我有一个数据框:

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/

相关文章:

python-3.x - 如何在python的类中使用光线并行性?

python - 如何在空文件上加载 json.load(filename)?

python - 在保留列表结构的同时删除列中的列表类型

python - 替换Excel表格中的数据

python - 如何在python中有选择地导入模块?

python - 欺诈检测分类ML的经纬度转换

python - 在 spyder 中访问 OpenCV 文档

Python Flask sqlalchemy 将新列插入表中 - heroku postgresql

python - 变量的符号链接(symbolic link)

python - 列重命名为 : switching between numbers and letters