python-3.x - 如何根据其他数据框列替换熊猫列值
问题描述
我有2个熊猫数据框如下
df1:-
col1 col2 col3
aa b c
aa d c
bb d t
bb b g
cc e c
dd g c
和第二个数据框:-
col1 col2
aa b
cc e
bb d
我想将dataframe1的col3的值更改为'cc'。如下所示。基于第二个数据框列 col1 和 col2。
col1 col2 col3
aa b cc
aa d c
bb d cc
bb b g
cc e cc
dd g c
简而言之,我想将第二个数据帧列(col1,col2)与第一个数据帧的列(col1,col2)映射并更改它匹配的第一个数据帧的列(col3)。
解决方案
用于DataFrame.merge
辅助列的左连接和指示符参数,比较Series.eq
for ==
withboth
和 last set values in DataFrame.loc
:
m = df1.merge(df2, on=['col1','col2'],indicator=True, how='left')['_merge'].eq('both')
df1.loc[m, 'col3'] = 'cc'
print (df1)
col1 col2 col3
0 aa b cc
1 aa d c
2 bb d cc
3 bb b g
4 cc e cc
5 dd g c
推荐阅读
- javascript - 循环 JSON 时无法在 Javascript 中使用 IN 运算符
- xml - 如何将 XML Powershell system.object[] 数组导出到 CSV 文件
- sql - 增量 SQL 查询的 AWS 等效项
- ios - 查看协调员/代表消失功能?
- .net - ASP.NET Core 3 MVC:对象列表的模型绑定
- node.js - 跨托管在同一域上的多个节点红色实例维护会话
- spring - “org.hibernate.PersistentObjectException:分离实体”后跟应用程序崩溃
- c# - 如何创建一个通用的 json 反序列化工厂
- javascript - 访问嵌套类方法
- javascript - 如果满足第一个函数的条件,则停止第二个函数