【发布时间】:2026-02-12 20:05:02
【问题描述】:
我有一个数据框,其中包含year 和type 的一些值。我想用特定类型的那一年值的平均值替换每年的所有 NaN 值。我想以最优雅的方式做到这一点。我正在处理大量数据,因此减少计算量也会很好。
例子:
df =pd.DataFrame({'year':[1,1,1,2,2,2],
'type':[1,1,2,1,1,2],
'val':[np.nan,5,10,100,200,np.nan]})
我希望将所有类型的所有 nan 替换为所有类型 1 的相应年份平均值。
在本例中,第一行 NaN 应替换为 5,最后一行应替换为 150。
这只会填充类型 1 缺失的值,而不是类型 2
df[val]=df[val].fillna(df.query('type==1').groupby('year')[val].transform('mean'))
【问题讨论】:
标签: python pandas pandas-groupby fillna