df.mean() 即使对于非 nan 输入也给出 nan 值

问题描述 投票:0回答:2

我正在计算数据框中每一行的平均值,但即使行中的所有值都是有效数值,平均值仍然是 nan。

所有列的数据类型都是 float64,但所有行的平均值都是 nan。 (图像中的最后一列是平均值)我已从计算中排除了第一列(时间戳列)。我也尝试指定 skipna=True,但即使那样也不起作用。

我用过的语句是df[].mean(axis=0,skipna=True)。 有些行有一些 nan 值,但这些行数的总和只是总行数的一小部分,我希望 skipna=True 部分能够处理 nans。

这可能发生的任何原因以及如何进行?

python pandas dataframe nan mean
2个回答
0
投票

你可以使用,它对我有用:

df['mean'] = df.iloc[:, [1,2,3,4,5,6,7,8,9]].mean(axis=1)

0
投票

工作演示如下:

import pandas as pd

df_example = pd.DataFrame({
    'DateTime': ['2018-09-15 12:00:00', '2018-09-15 13:00:00', '2018-09-15 14:00:00', '2018-09-15 15:00:00', '2018-09-15 16:00:00', '2018-09-15 17:00:00', '2018-09-15 18:00:00', '2018-09-15 19:00:00', '2018-09-15 20:00:00'],   
    'Num1': [1, 2, 3, 4, 5, 6, 7, 8, 9],
    'Num2': [6, 6, 6, 6, 6, 6, 6, 6, 6]
})

df_example['Mean'] = df_example[['Num1', 'Num2']].mean(axis=1)

print(df_example)

输出

              DateTime  Num1  Num2  Mean
0  2018-09-15 12:00:00     1     6   3.5
1  2018-09-15 13:00:00     2     6   4.0
2  2018-09-15 14:00:00     3     6   4.5
3  2018-09-15 15:00:00     4     6   5.0
4  2018-09-15 16:00:00     5     6   5.5
5  2018-09-15 17:00:00     6     6   6.0
6  2018-09-15 18:00:00     7     6   6.5
7  2018-09-15 19:00:00     8     6   7.0
8  2018-09-15 20:00:00     9     6   7.5
© www.soinside.com 2019 - 2024. All rights reserved.