python - 基于过滤器使用来自第二个数据帧的值更新数据帧
问题描述
我有两个数据框:
print df1
name value a value b recommendation
a Arn 1 30 Up
b Bob 1 50 Wait
c Cain 2 70 Up
d Dain 3 80 Wait
print df2
name value a value b recommendation
a Arn 3 50 Up
b Bob 2 90 Up
c Cain 4 170 Up
d Dain 9 280 Up
我正在尝试使用更新方法使用 df2 值更新 df1,其中建议在 df1 上“等待”:
df1.update(df2, filter_func = df1.loc[df1['recommendation'] == 'Wait'])
这是行不通的。知道如何解决这个问题吗?
编辑
预期输出为:
print df1
name value a value b recommendation
a Arn 1 30 Up
b Bob 2 90 Up
c Cain 2 70 Up
d Dain 9 280 Up
解决方案
使用mask
, 全部转为np.nan
, 然后我们使用combine_first
df1=df1.mask(df1=='Wait').combine_first(df2)
df1
Out[621]:
name valuea valueb recommendation
a Arn 1 30 Up
b Bob 1 50 Up
c Cain 2 70 Up
d Dain 3 80 Up
如果您需要更新整行
df1.loc[(df1.recommendation!='Wait')].combine_first(df2)
Out[623]:
name valuea valueb recommendation
a Arn 1.0 30.0 Up
b Bob 2.0 90.0 Up
c Cain 2.0 70.0 Up
d Dain 9.0 280.0 Up
推荐阅读
- node.js - 如何在没有 express 的情况下在 Node.JS 中创建会话变量?
- crystal-reports - 在创建部分时显示确切时间
- tsql - 将值分配给行的 GroupID 列
- ruby-on-rails - 我的 Rails 的 HTML ERB 文件中有一个错误
- java - 如何添加对嵌入消息 JDA 的反应
- amazon-web-services - 如何在 AWS Glue/Athena 上使用 AVRO 格式
- microsoft-graph-api - 图/站点端点的 HTTP 400 - 使用资源进行身份验证时出错
- ruby - 在 Time.new.to_date.to_time 上可能会发生 nil 取消引用
- css - 垂直滚动捕捉实现不起作用
- r - 如何根据索引向量检查和添加数据框中的缺失行?