You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中如何基于其他列取值按规则填充DataFrame列缺失值

pandas按性别规则填充eGFR列缺失值实现方法

处理逻辑

  • 先统一清洗eGFR列格式:将字符串形式的缺失标记、带前置空格的数值统一转换为浮点类型,确保pandas可正确识别空值
  • 分别按给定公式计算男性、女性对应的eGFR基准值
  • 定位eGFR为空的行,按性别匹配对应计算值完成填充,全程使用pandas向量化运算,无循环效率更高

完整实现代码

import pandas as pd
import io

csv_data = '''
gender,age,Cr,eGFR
1,76,0.56,60.7
1,50,0.76, 70.6
2,64,0.62,55.9
1,62,0.45,Nan
1,68,0.88,80.2
2,69,0.65,Nan
1,70,0.64,62.8
2,65,0.39,60.2
'''
df = pd.read_csv(io.StringIO(csv_data))

# 清洗eGFR列,转换为数值类型,自动识别空值、处理带空格的数值
df['eGFR'] = pd.to_numeric(df['eGFR'], errors='coerce')

# 按公式分别计算男女eGFR基准值
male_calc = 194 * df['Cr'] - 1.094 * df['age'] - 0.287
female_calc = 194 * df['Cr'] - 1.094 * df['age'] - 0.287 * 0.739

# 按性别匹配填充缺失值
df.loc[(df['gender'] == 1) & (df['eGFR'].isna()), 'eGFR'] = male_calc
df.loc[(df['gender'] == 2) & (df['eGFR'].isna()), 'eGFR'] = female_calc

填充结果说明

填充完成后原2个缺失值的计算结果:

  • 62岁男性(Cr=0.45):eGFR填充值为19.185
  • 69岁女性(Cr=0.65):eGFR填充值为50.402(保留三位小数)
    其余原有非空值不受任何影响。

内容的提问来源于stack exchange,提问作者Dai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:54:20