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
The DataFrame:Как caculate в среднем в то время как с помощью np.nan с указанной np.average (При использовании GroupBy)
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 Funciton, чтобы вычислить среднее значение "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
, что я хочу сделать в том, что:
, когда АВС являются цифрами, среднее = (А + В + С)/3
, когда один из ABC является np.nan, средний = сумма/2
Я не знаю панд, но разве вы не можете использовать 'np.nanmean'? –
@Paul Panzer OMG.np.nanmean решает проблему. –
@jezrael, что вы имеете в виду уникальный индекс? «индекс», который я использовал здесь, просто для функции groupby –