import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(10).reshape(-1, 2), columns=['A', 'B'])
df['C']=[5,2,np.nan,4,np.nan]
df['index']=df.index
数据帧:
A B C index
0 0 1 5 0
1 2 3 2 1
2 4 5 NaN 2
3 6 7 4 3
4 8 9 NaN 4
我想使用groupby函数来计算每个索引的“A”“B”“C”的平均值。你知道吗
df1 = df.groupby('index')
average = df1.apply(lambda df,x,y :np.average(df.iloc[:,x:y]),0,3)
平均值:
index
0 2.00
1 2.33
2 NaN
3 5.67
4 NaN
dtype:float64
我想做的是:
当A B C是数字时,平均值=(A+B+C)/3
当ABC之一np.nan公司,平均值=sum/2
为什么使用numpy而不是
pandas.mean()
?你知道吗它只做您需要的事情,并且也适用于
groupby
对象。你知道吗您可以使用自定义函数:
可以使用^{} -
NaN
省略:或者是来自Paul Panzer comment的想法:
另外} 与
groupby
不是必需的,只选择所需的列并将^{axis=1
一起使用:相关问题 更多 >
编程相关推荐