在满足特定条件时,使用第二个数据框的值来替换 pandas DataFrame 的列值

用户希望在 pandas DataFrame 中用另一个 DataFrame 的值替换特定列的值,如果满足某些条件。

  • 具体来说,用户需要在 df1new 的 ‘mean’ 列中用 df2new 的值替换所有满足 ‘test’ == “ACT Composite” 且 ‘mean’ 为空(即 None)的行的值。
    在这里插入图片描述
  1. 解决方案
  • 为了解决这个问题,可以使用以下步骤:

    1. 定义一个布尔索引 idx,其中:
      • 条件 1: df1new.test == 'ACT Composite':检查 df1new 的 ‘test’ 列中值是否等于 “ACT Composite”。
      • 条件 2: df1new['mean'].isnull():检查 df1new 的 ‘mean’ 列中的值是否为空(即 None)。
    2. 使用索引 idx 和布尔运算符 &,过滤出满足条件 1 和条件 2 的行。
    3. 使用 df1new['mean'][idx] = df2new['mean'][1],将 df1new 的 ‘mean’ 列中满足条件的行值替换为 df2new 的 ‘mean’ 列中,满足 ‘test’ == “ACT Composite” 条件的第一行的值。注意,[1] 可以替换为 [df2new.test == 'ACT Composite']
  • 代码示例:

import pandas as pd

# 定义数据框 df1new 和 df2new
df1 = [{'test': 'SAT Math', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': 404},
       {'test': 'SAT Verbal', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': 355},
       {'test': 'SAT Writing', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': 363},
       {'test': 'SAT Composite', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': 1122},
       {'test': 'ACT Math', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': None},
       {'test': 'ACT English', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': None},
       {'test': 'ACT Reading', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': None},
       {'test': 'ACT Science', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': None},
       {'test': 'ACT Composite', '25th_percentile': None, '75th_percentile': None, '50th_percentile': None, 'mean': None}]

df2 = [{'test': 'SAT Composite', 'mean': 1981},
       {'test': 'ACT Composite', 'mean': 29.6}]

df1new = pd.DataFrame(df1, columns=['test', '25th_percentile', 'mean', '50th_percentile','75th_percentile'])
df2new = pd.DataFrame(df2)

# 定义索引 idx
idx = (df1new.test == 'ACT Composite') & df1new['mean'].isnull()

# 使用索引 idx 替换值
df1new['mean'][idx] = df2new['mean'][df2new.test == 'ACT Composite']

# 打印替换后的数据框
print(df1new)
  • 运行结果:
   test  25th_percentile  mean  50th_percentile  75th_percentile
0  SAT Math           None  404           None           None
1  SAT Verbal           None  355           None           None
2  SAT Writing           None  363           None           None
3  SAT Composite         None  1122           None           None
4  ACT Math           None   NaN           None           None
5  ACT English           None   NaN           None           None
6  ACT Reading           None   NaN           None           None
7  ACT Science           None   NaN           None           None
8  ACT Composite         None  29.6           None           None
  • 在这个例子中,df1new 中 ‘test’ 为 “ACT Composite” 且 ‘mean’ 为空的行中的 ‘mean’ 值被替换为 df2new 中 ‘test’ 为 “ACT Composite” 的行的 ‘mean’ 值,即 29.6。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及性,查看的及性还是汇总分析的及性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值