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

如何按Name分组对DataFrame的Signal列nan值用对应分组众数填充

按分组众数填充Signal列空值的实现方案

我们可以通过pandas的分组转换逻辑实现需求,核心思路是按Name列拆分分组后,提取每组Signal列的众数,再填充对应组的空值:

完整代码示例

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'Timestamp': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-01', '2021-01-02', '2021-01-03'],
    'Name': ['A', 'A', 'A', 'B', 'B', 'B'],
    'Signal': ['On', np.nan, 'On', 'Off', 'Off', np.nan]
})

# 核心填充逻辑
df['Signal'] = df.groupby('Name')['Signal'].transform(
    lambda x: x.fillna(x.mode()[0])
)

逻辑说明

  • groupby('Name'):按Name列将数据集拆分为独立分组
  • transform:对每个分组内的Signal列做转换处理,返回的序列长度和原数据一致,自动对齐索引不会打乱原有数据顺序
  • x.mode()[0]:提取当前分组Signal列的众数,加[0]是为了兼容某组存在多个众数的场景,默认取第一个出现的众数,可根据业务需求调整选择规则
  • 若需要兼容分组内Signal全为空的极端场景,避免取众数时报错,可以把lambda逻辑调整为:
    lambda x: x.fillna(x.mode()[0]) if not x.mode().empty else x
    

运行代码后即可得到预期结果:A组的空值填充为On,B组的空值填充为Off。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:36:05