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

如何基于站点条件填充DataFrame的national plan value列空值

解决DataFrame空值填充问题(基于相同Site的非空值)

嘿,我来帮你搞定这个DataFrame的空值填充需求!先理清楚咱们的问题和数据:

原始数据df1

首先,你的原始DataFrame长这样(我把“空”换成了pandas识别的NaN缺失值):

Sitecellsnational plan value
T13630G13630B225
T13631G13631ANaN
T13631U13631A57
T13672G13672A310
T13802G13802A150
T13802G13802B151
T13802U13802ANaN
T13880G13880A274
T13880U13880BNaN
T33281U33281ANaN

需求说明

你需要生成df2,把national plan value列的空值填上,规则是:找到该列的空值单元格,如果同一Site下有其他非空的数值,就用这些值来填充空值(不管空值在非空值的上面还是下面)。下面我给你几种常用的实现方式,你可以根据自己的需求选:

代码实现

首先,先把原始数据加载成pandas的DataFrame:

import pandas as pd
import numpy as np

# 构造你的原始df1
data = {
    'Site': ['T13630', 'T13631', 'T13631', 'T13672', 'T13802', 'T13802', 'T13802', 'T13880', 'T13880', 'T33281'],
    'cells': ['G13630B', 'G13631A', 'U13631A', 'G13672A', 'G13802A', 'G13802B', 'U13802A', 'G13880A', 'U13880B', 'U33281A'],
    'national plan value': [225, np.nan, 57, 310, 150, 151, np.nan, 274, np.nan, np.nan]
}
df1 = pd.DataFrame(data)

方式1:用同Site的第一个非空值填充

这种方式会把同Site下第一个出现的非空值,填充到该Site所有的空值里,不管空值在上面还是下面:

df2 = df1.copy()
# 按Site分组,先向前填充再向后填充,确保所有空值都被覆盖
df2['national plan value'] = df2.groupby('Site')['national plan value'].apply(lambda x: x.ffill().bfill())

方式2:用同Site的平均值填充

如果同Site有多个非空值,取它们的平均值来填充空值,适合数值型数据的统计填充:

df2 = df1.copy()
# 计算每个Site的均值,然后填充空值
site_avg = df2.groupby('Site')['national plan value'].transform('mean')
df2['national plan value'] = df2['national plan value'].fillna(site_avg)

方式3:用同Site的众数填充

如果你的数据有重复出现的高频值,想用出现次数最多的值填充,可以用这个方式:

df2 = df1.copy()
# 计算每个Site的众数,处理众数可能为空的情况
site_mode = df2.groupby('Site')['national plan value'].transform(lambda x: x.mode()[0] if not x.mode().empty else np.nan)
df2['national plan value'] = df2['national plan value'].fillna(site_mode)

结果说明

  • 像T13631这个Site,空值会被填充成57(三种方式结果一致)
  • T13802这个Site,方式1会填150(第一个非空值),方式2会填150.5(150和151的均值),方式3会填150(因为两个值出现次数相同,取第一个众数)
  • T33281这个Site没有任何非空值,所以空值会保留为NaN,如果需要的话你可以再加一步填充默认值(比如fillna(0))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:33:33