我的数据结构如下:

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/

10-12 18:35