Python 2.7 Python中的空独立列平均值计算
我试图计算Python中三列的平均值。这是陷阱- 如果我的3列的所有3行值都不为空,那么我的平均值将为(x+y+z)/3 如果我的一行值为null(假设z),那么我的平均值应该是(x+y)/2 我将这些平均值存储在一个单独的列中,这是熊猫数据帧的一部分 我正在寻找最好的方法,因为我的数据集有200多万行。 我的数据如下 提前谢谢Python 2.7 Python中的空独立列平均值计算,python-2.7,pandas,Python 2.7,Pandas,我试图计算Python中三列的平均值。这是陷阱- 如果我的3列的所有3行值都不为空,那么我的平均值将为(x+y+z)/3 如果我的一行值为null(假设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
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
只需沿轴
0
(列)应用numpy.nanmean
函数即可。这是默认轴,因此忽略轴=0将得到相同的结果。如果需要行方式的平均值,请使用轴=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
我想他们想要三列的行平均值,所以axis=1?好吧,然后巨大的东转图像把我弄糊涂了:)我会更新一吨!为我糟糕的发帖技巧道歉:)