我有以下熊猫资料;
a = [['01', '12345', 'null'], ['02', '78910', '9870'], ['01', '23456', 'null'],['01', '98765', '8760']]
df_a = pd.DataFrame(a, columns=['id', 'order', 'location'])
我需要计算每个ID出现多少个空值(NULL是一个字符串)。
id null_count
01 02
我可以使用groupby获得基本计数:
new_df = df_a.groupby(['id', 'location'])['id'].count()
但是结果返回的不仅仅是空值;
id location
01 8760 1
null 2
02 9870 1
发布于 2017-11-02 12:53:10
因为在源dataframe中,您的null是字符串'null',所以请使用:
df_a.groupby('id')['location'].apply(lambda x: (x=='null').sum())\
.reset_index(name='null_count')
输出:
id null_count
0 01 2
1 02 0
或
df_a.query('location == "null"').groupby('id')['location'].size()\
.reset_index(name='null_count')
输出:
id null_count
0 01 2
发布于 2017-11-02 13:02:22
In [16]: df_a.set_index('id')['location'].eq('null').sum(level=0)
Out[16]:
id
01 2.0
02 0.0
Name: location, dtype: float64
https://stackoverflow.com/questions/47084378
复制相似问题