gpt4 book ai didi

python - 忽略 0 的行的 Pandas 平均值

转载 作者:行者123 更新时间:2023-12-05 01:04:50 27 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame:

           AD1        AD2        AD3        AD4        AD5
1 0 0 0 0 0
2 0 0 0 0 0
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 0 0
.. ... ... ... ... ...
497 138099424 126282256 0 197637664 0
498 90184696 53508360 90254688 66803036 57421672
499 41476688 54889712 36677268 33858400 50282272
500 26322476 27609302 26245020 20566374 23664970
501 595136256 241994400 489766144 314901408 730741120

我需要找到每一行的平均值,忽略 0 的实例。我最初的计划是用 NaN 替换 0,然后得到不包括 NaN 的平均值。

我尝试将 0 替换为 NaN,但这不起作用,并且 DataFrame 仍然包含 0。我尝试了:

df = df.replace(0, np.nan)
df = df.replace(0, np.nan, inplace=True)

第二个问题是当我试图计算平均值时,即使知道 0 将被包含在内,但无法计算平均值。我用过:

df = df.assign(mean=df.mean(axis=1))

结果是:

           AD1        AD2        AD3        AD4        AD5  mean
1 0 0 0 0 0 NaN
2 0 0 0 0 0 NaN
3 0 0 0 0 0 NaN
4 0 0 0 0 0 NaN
5 0 0 0 0 0 NaN
.. ... ... ... ... ... ...
497 138099424 126282256 0 197637664 0 NaN
498 90184696 53508360 90254688 66803036 57421672 NaN
499 41476688 54889712 36677268 33858400 50282272 NaN
500 26322476 27609302 26245020 20566374 23664970 NaN
501 595136256 241994400 489766144 314901408 730741120 NaN

我怎样才能做到这一点?

最佳答案

你可以使用mask + mean:

df['mean'] = df.mask(df==0).mean(axis=1)

输出:

           AD1        AD2        AD3        AD4        AD5         mean
1 0 0 0 0 0 NaN
2 0 0 0 0 0 NaN
3 0 0 0 0 0 NaN
4 0 0 0 0 0 NaN
5 0 0 0 0 0 NaN
497 138099424 126282256 0 197637664 0 154006448.0
498 90184696 53508360 90254688 66803036 57421672 71634490.4
499 41476688 54889712 36677268 33858400 50282272 43436868.0
500 26322476 27609302 26245020 20566374 23664970 24881628.4
501 595136256 241994400 489766144 314901408 730741120 474507865.6

关于python - 忽略 0 的行的 Pandas 平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71344466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com