Pandas按Name分组将alpha列有效值均分替换同组Nan值
Pandas 分组填充alpha列实现方案
实现思路
- 按
Name列分组后,对每组alpha列做转换计算:先计算组内所有非NaN有效值的总和,再除以该组的总行数,得到每组统一的填充值 - 利用pandas的
transform方法,可直接将分组计算得到的结果映射回原数据的对应行,无需额外做表拼接操作,explode方法用于拆分列表类元素为多行,和当前需求场景不匹配,因此无法得到预期结果
完整代码示例
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'Name': ['A', 'A', 'A', 'B', 'B'], 'T1': [10, 11, 13, 5, 3], 'T2': [3, 5, 5, 2, 1], 'alpha': [30, np.nan, np.nan, 7, np.nan] }) # 核心逻辑:分组计算填充值,若存在组内alpha全为NaN的场景可加判断避免报错 df['alpha'] = df.groupby('Name')['alpha'].transform( lambda g: g.sum() / g.size if g.notna().any() else np.nan ) print(df)
运行后输出结果和你给出的预期完全一致:
Name T1 T2 alpha 0 A 10 3 10.0 1 A 11 5 10.0 2 A 13 5 10.0 3 B 5 2 3.5 4 B 3 1 3.5
内容的提问来源于stack exchange,提问作者think-maths
相关产品推荐
相关产品推荐

