2016-07-10 2 views
1

Я хотел бы группы DataFrame некоторой области, какКак подсчитать строки не значения в python pandas?

student_data.groupby(['passed']) 

, а затем подсчитать количество строк внутри каждой группы.

Я знаю, как считать значения, как

student_data.groupby(['passed'])['passed'].count() 

или

student_data.groupby(['passed']).agg({'passed': 'count'}) 

, но это будет exclude empties by default. Я хотел бы считать все строки в группах?

Я обнаружил, что могу рассчитывать строки в целом DataFrame с

len(student_data.index) 

, но не может найти index поле GroupBy объекта или что-то.

ответ

3

Вам необходимо value_counts с параметром dropna=False:

import pandas as pd 
import numpy as np 

student_data = pd.DataFrame({'passed':[1,1,2,2,2,np.nan,np.nan]}) 
print(student_data) 
    passed 
0  1.0 
1  1.0 
2  2.0 
3  2.0 
4  2.0 
5  NaN 
6  NaN 

print (student_data['passed'].value_counts(dropna=False)) 
2.0 3 
1.0 2 
NaN  2 
Name: passed, dtype: int64 
2

Вы можете использовать метод groupby.aggregate для вычисления некоторой функции по каждой группе:

student_data.groupby("passed").aggregate(len) 
Смежные вопросы