Я бы хотел объединить Pandas DataFrame, используя sum
и получить NaN
, если все значения группы NaN
.Это работает в случае .agg('sum', min_count=1)
, но min_count
игнорируется при использовании словаря агрегации.
Что мне здесь не хватает и как я могу это исправить?
Пример:
import pandas as pd
import numpy as np
d = {'l': ['a', 'b', 'a', 'b', 'c', 'c'],
'v': [-1, 1, np.nan, 1, np.nan, np.nan],
'w': [-1, 1, np.nan, 1, np.nan, np.nan]}
df = pd.DataFrame(d)
sum
вернул бы 0.0
для групп, которые все NaN
, но мы можем это исправить, используя аргументы min_count=1
:
print(df.groupby('l')['v'].agg('sum'))
> l
> a -1.0
> b 2.0
> c 0.0
> Name: v, dtype: float64
print(df.groupby('l')['v'].agg('sum', min_count=1))
> l
> a -1.0
> b 2.0
> c NaN
> Name: v, dtype: float64
Но при использовании словаря, похоже, игнорирует ключевое слово аргумент.
df.groupby('l').agg({'v':'sum', 'w':'mean'}, min_count=1)
> Name: v, dtype: float64
> v w
> l
> a -1.0 -1.0
> b 2.0 1.0
> c 0.0 NaN
Спасибо за помощь!