首页 > 解决方案 > 如何用熊猫数据框中第一行和相应行之间的列的平均值填充特定值

问题描述

我有一个这样的df,

A   B   C   D   E
1   2   3   0   2
2   0   7   1   1
3   4   0   3   0
0   0   3   4   3

我正在尝试将第一行和对应列的 0 值行之间的所有 0 替换为 mean() 值,

我的预期输出是,

A       B       C           D       E
1.0     2.00    3.000000    0.0     2.0
2.0     1.00    7.000000    1.0     1.0
3.0     4.00    3.333333    3.0     1.0
1.5     1.75    3.000000    4.0     3.0

标签: pythonpandasdataframedata-analysis

解决方案


IIUC

def f(x):
    for z in range(x.size):
        if x[z] == 0: x[z] = np.mean(x[:z+1])
    return x

df.astype(float).apply(f)

    A   B       C           D   E
0   1.0 2.00    3.000000    0.0 2.0
1   2.0 1.00    7.000000    1.0 1.0
2   3.0 4.00    3.333333    3.0 1.0
3   1.5 1.75    3.000000    4.0 3.0

推荐阅读