4

我有以下熊猫数据帧;

a=[[‘01’,‘12345’,‘null’],[‘02’,‘78910’,‘9870’],['01’,'23456',‘null'],[’01’,'98765',‘8760’]]df_a=pd.DataFrame(a,columns=['id','order','location'])

我需要获取每个ID出现的NULL值(NULL是一个字符串)的数量,因此结果如下所示:;

id为null_count01    02

我可以使用groupby获得基本计数:

new_df=df_a.groupby(['id','位置'])['id'].count()

但结果返回的不仅仅是NULL值;

id位置01  8760        1空值202  9870        1

3个答案

重置为默认值
6

因为在源数据帧中,null是字符串“null”,请使用:

df_a.groupby('id')['位置'].apply(lambda x:(x=='null').sum())\.reset_index(名称=“完整计数”)

输出:

id为null_count0  01          21  02          0

df_a.query('location==“null”').groupby('id')['location'].size()\.reset_index(名称='null_count')

输出:

id为null_count0  01           2
1
  • 我祝你圣诞快乐!谢谢大家的支持,给你这么小的礼物(3+)。祝你好运! 评论 2017年12月24日8:55
5

基于您自己的代码,添加.loc位置注意,这是多索引切片。。

df_a.groupby(['id','location'])['id'].count().loc[:,'null']输出[932]:身份证件01    2名称:id,数据类型:int64
4
在[16]中:df_a.set_index('id')['位置'].eq('null').sum(level=0)输出[16]:身份证件01    2.002    0.0名称:location,数据类型:float64

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.