像Qlik一样,在数据帧中计算列中的唯一值?

如果我有这样一张桌子:

df=pd.DataFrame({
"hID":[101,102,103,101,102,104,105,101],,
“dID”:[10,11,12,10,11,10,12,10],
“uID”:[“詹姆斯”、“亨利”、“亚伯”、“詹姆斯”、“亨利”、“布莱恩”、“克劳德”、“詹姆斯”],
“mID”:[“A”、“B”、“A”、“B”、“A”、“A”、“A”、“C”]
})

我可以在Qlik中执行count(distinct hID),为唯一的hID计算出5的计数。如何在python中使用熊猫数据帧来实现这一点?或者是一个numpy阵列?类似地,如果我们做count(hID)Qlik中我会得到8。在熊猫身上做这件事的等效方法是什么

计算不同的值,使用nunique

df['hID'].nunique()
5.

仅计数非空值,使用Count

df['hID'].count()
8.

计算包括空值在内的总值,使用size属性:

df['hID'].大小
8.

编辑以添加条件

使用布尔索引:

df.loc[df['mID']='A','hID'].agg(['nunique','count','size'])

或使用查询

df.query('mID=='A"')['hID'].agg(['nunique','count','size']))

输出:

nunique 5
数到五
5号
名称:hID,数据类型:int64

发表评论