像 Qlik 一样计算 pandas 数据框中的列中的唯一值?

新手上路,请多包涵

如果我有这样的表:

 df = pd.DataFrame({
         'hID': [101, 102, 103, 101, 102, 104, 105, 101],
         'dID': [10, 11, 12, 10, 11, 10, 12, 10],
         'uID': ['James', 'Henry', 'Abe', 'James', 'Henry', 'Brian', 'Claude', 'James'],
         'mID': ['A', 'B', 'A', 'B', 'A', 'A', 'A', 'C']
})

我可以在 Qlik 中做 count(distinct hID) 来计算 5 的唯一 HID。如何使用 pandas 数据框在 python 中做到这一点?或者也许是一个numpy数组?同样,如果要执行 count(hID) 我将在 Qlik 中得到 8。在熊猫中等效的方法是什么?

原文由 Alhpa Delta 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 370
2 个回答

计算不同的值,使用 nunique

 df['hID'].nunique()
5

只计算非空值,使用 count

 df['hID'].count()
8

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

 df['hID'].size
8

编辑以添加条件

使用布尔索引:

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

或使用 query

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

输出:

 nunique    5
count      5
size       5
Name: hID, dtype: int64

原文由 Scott Boston 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果我假设 data 是你的数据框的名称,你可以这样做:

 data['race'].value_counts()

这将向您显示不同的元素及其出现次数。

原文由 oumar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题