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

如何基于另一分类列填充DataFrame中的NaN值?

分条件填充DataFrame中的NaN值

完整解决方案代码

import pandas as pd
import numpy as np

# 示例数据
data = pd.DataFrame({
    'Partner_working': ['Yes','No','Yes','Yes','No'],
    'Partner_salary': [np.NaN,np.NaN,1500,1000,0]
})

# 1. 给Partner_working为'No'的NaN薪资填0
data.loc[(data['Partner_working'] == 'No') & data['Partner_salary'].isna(), 'Partner_salary'] = 0

# 2. 用剩余薪资的均值填充剩下的NaN
salary_avg = data['Partner_salary'].mean()
data['Partner_salary'] = data['Partner_salary'].fillna(salary_avg)

print(data)

步骤拆解

  • 第一步用loc同时过滤两个条件:Partner_working等于'No',且Partner_salary是空值,直接把这些位置的薪资设为0。你之前的代码已经能统计到这类空值的数量,现在只需要在切片后加上赋值操作就行。
  • 第二步先计算当前列的均值(此时No对应的空值已经被填成0,均值会包含这些有效数据),再用fillna把剩下的空值(也就是Yes对应的那些)替换成均值。

运行结果

Partner_working  Partner_salary
0              Yes          1166.666667
1               No             0.000000
2              Yes          1500.000000
3              Yes          1000.000000
4               No             0.000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:12:05