我想按某些字段对 DataFrame 进行分组
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)
但在 GroupBy 对象或其他东西中找不到任何 index 字段。
请您参考如下方法:
你需要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
