#python #pandas
#python #pandas
Вопрос:
В этом фрейме данных я пытаюсь подсчитать, сколько NaN для каждого цвета в color
столбце.
Вот как выглядит образец данных. На самом деле, там 100 тысяч строк.
color value
0 blue 10
1 blue NaN
2 red NaN
3 red NaN
4 red 8
5 red NaN
6 yellow 2
Я бы хотел, чтобы результат выглядел следующим образом:
color count
0 blue 1
1 red 3
2 yellow 0
Ответ №1:
Вы можете использовать DataFrame.isna
, GroupBy
столбец color
и sum
для суммирования всех True
строк в каждой группе:
df.value.isna().groupby(df.color).sum().reset_index()
color value
0 blue 1.0
1 red 3.0
2 yellow 0.0
Ответ №2:
Также вы можете использовать agg () и isnull() или isna() следующим образом:
df.groupby('color').agg({'value': lambda x: x.isnull().sum()}).reset_index()
Ответ №3:
Используйте isna().sum()
df.groupby('color').value.apply(lambda x: x.isna().sum())
color
blue 1
red 3
yellow 0
Ответ №4:
Использование из size
и count
g=df.groupby('color')['value']
g.size()-g.count()
Out[115]:
color
blue 1
red 3
yellow 0
Name: value, dtype: int64