Я обнаружил странное поведение с groupby и пропущенными значениями.

df = pd.DataFrame({ "A": [2, 1, 1, 2, 2], "B": [False, np.nan, False, np.nan, False]})

Теперь вычисляя группу, я получаю:

>>> dfB.groupby('A')['B'].nunique()
A
1    1
2    2
Name: B, dtype: int64

Это ошибка в пандах? По умолчанию у нас есть dropna = True . Таким образом, я думаю, что мы должны иметь 1 запись для каждого из них.

2
Mathieu Dutour Sikiric 10 Дек 2019 в 16:33
1
Да, это исправленная ошибка в пандах. Исправление будет включено в следующий выпуск pandas (1.0).
 – 
root
10 Дек 2019 в 23:35

1 ответ

Я думаю, ошибка, возможное решение - передать Series.nunique:

print (df.groupby('A')['B'].agg(pd.Series.nunique))

Или же:

print (df.groupby('A')['B'].apply(pd.Series.nunique))
A
1    1
2    1
Name: B, dtype: int64
1
jezrael 10 Дек 2019 в 16:35