У меня есть этот dataframe:Все объекты Прошёл не было, Панды
data = {'My_name':["abc","nc","there",""] , 'Val1':[44.20,22,None,44],'Val2':[50,20,40,72.2]}
df1 = pd.DataFrame(data)
My_name Val1 Val2
0 abc 44.2 50.0
1 nc 22.0 20.0
2 there NaN 40.0
3 44.0 72.2
4 there 28 60
И я использовал следующую инструкцию, чтобы получить среднее значение величин, основанный на My_name
:
df2 = df1.where(pd.notnull(df1), None)
dcm = df2.groupby(['My_name']).agg([np.mean])
Exception: All objects passed were None
Я пытался различные тесты и реализовали ошибку из-за None
, вычисляя среднее значение. Я попытался с помощью следующих вместо того, чтобы заботиться о None
значений:
df3 = df2.where(pd.notnull(df2['Val1']), None)
df4 = df3.where(pd.notnull(df3['Val2']), None)
dcm2 = df4.groupby(['My_name']).agg([np.mean])
, но я все еще получаю ту же ошибку. Как игнорировать NaN, не испортив его?
Что-то вроде этого также будет делать: Создание двух данных. Один без значений None (в Val1 и Val2), а другой с None Values. например:
df_sub:
My_name Val1 Val2
0 abc 44.2 50.0
1 nc 22.0 20.0
3 44.0 72.2
4 there 28 60
и df_sub2
:
My_name Val1 Val2
3 there Nan 40.0
df.dropna()
выглядит как хорошая функция, чтобы сделать это, так что я сделал:
df_sub = df2.dropna(subset=['Val1','Val2'])
Как я получить второе dataframe?
Почему вы пытаетесь заменить NaN на None? Значения NaN по умолчанию игнорируются средним значением. Так что просто делайте свою группировку на исходном фрейме данных 'df1.groupby (['My_name']). Agg ([np.mean])'. Это то, что вы хотите? (и в противном случае покажите свой ожидаемый результат для grouby) – joris