我的数据结构如下:
S1 D1 1 2 3 4 5
D2 2 Nan 3 4 5
D3 3 4 5 Nan 6
S2 D4 Nan 3 4 5 6
D5 6 7 8 9 0
S3 D6 3 4 5 6 7
D7 4 5 6 7 Nan
D8 5 6 7 7 8
D9 2 3 4 5 6
S是不同的州,D是不同的地区。我如何将NANs作为列的平均值,而仅仅是对应的状态,而不是所有列的平均值来计算呢?
完全没问题,谢谢你的帮助。
输出应该如下所示:
S1 D1 1 2 3 4 5
D2 2 3 3 4 5
D3 3 4 5 4 6
S2 D4 6 3 4 5 6
D5 6 7 8 9 0
S3 D6 3 4 5 6 7
D7 4 5 6 7 7
D8 5 6 7 7 8
D9 2 3 4 5 6
不是平均整列:
S1 D1 1 2 3 4 5
D2 2 4.25 3 4 5
D3 3 4 5 5.87 6
S2 D4 3.25 3 4 5 6
D5 6 7 8 9 0
S3 D6 3 4 5 6 7
D7 4 5 6 7 4.25
D8 5 6 7 7 8
D9 2 3 4 5 6
谢谢您。
最佳答案
使用transform
df.fillna(df.groupby(level=0).transform('mean'))
2 3 4 5 6
0 1
S1 D1 1.0 2.0 3 4.0 5.0
D2 2.0 3.0 3 4.0 5.0
D3 3.0 4.0 5 4.0 6.0
S2 D4 6.0 3.0 4 5.0 6.0
D5 6.0 7.0 8 9.0 0.0
S3 D6 3.0 4.0 5 6.0 7.0
D7 4.0 5.0 6 7.0 7.0
D8 5.0 6.0 7 7.0 8.0
D9 2.0 3.0 4 5.0 6.0
关于python - 如何将NaNs归为mean()但通过多索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43748208/