Python中的空独立列明智均值计算

时间:2018-06-22 20:25:49

标签: python-2.7 pandas

我正在尝试计算Python中3个三列的平均值。这里是要抓住的地方- 如果我的3列的所有3行值都不为null,那么我的平均值将为(x + y + z)/ 3。

如果我的行值之一为空(假设z),则我的平均值应为(x + y)/ 2。

我将平均值存储在熊猫数据框一部分的单独列中。

我正在寻找最好的方法,因为我的数据集有超过200万行。 我的数据如下。

谢谢。

     A    B  C
0    1    2  3   # = (1+2+3)/3 = 2
1    4  NaN  6   # = (4+6)/2 = 5
2  NaN    8  9   # = (8+9)/2 = 8.5

1 个答案:

答案 0 :(得分:0)

只需沿轴numpy.nanmean(列)应用0函数。这是默认轴,因此省略axis = 0将获得相同的结果。如果要按行使用均值,请使用axis = 1

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'a': [2.3, 4.5, 2.1, np.nan, 6.7],
    'b': [2.4, 5.6, np.nan, np.nan, 7.1],
    'c': [np.nan, np.nan, np.nan, np.nan, 0.9]
})

colmeans = df.apply(np.nanmean, axis = 0)

# colmeans
# a    3.900000
# b    5.033333
# c    0.900000
# dtype: float64

rowmeans = df.apply(np.nanmean, axis = 1)

# 0    2.35
# 1    5.05
# 2    2.10
# 3     NaN
# 4    4.90
# dtype: float64