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

标签 python pandas numpy qlikview qliksense

如果我有这样的表:

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) 来为唯一 hID 计算 5 个计数。如何使用 pandas 数据框在 python 中做到这一点?或者也许是一个numpy数组?同样,如果要执行 count(hID) 我将在 Qlik 中得到 8。在 pandas 中等效的方法是什么?

最佳答案

计算不同的值,使用 nunique:

df['hID'].nunique()
5

只计算非空值,使用count:

df['hID'].count()
8

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

df['hID'].size
8

编辑以添加条件

使用 bool 索引:

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

OR 使用 查询:

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

输出:

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

关于python - 像 Qlik 一样计算 pandas 数据框中的列中的唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45759966/

相关文章:

python - 如何将 Google Chrome 扩展与 Selenium 结合使用?

python - 如何强制 Pandas 数据框列成为普通索引

python - Pandas:查找一列中存在重复值且第二列中存在不同值的行

python - 比较 Python、Numpy、Numba 和 C++ 的矩阵乘法

python - 在追加模式下加载使用 numpy.save 保存的数组

python - 使用 "open"打开 PIL 图像时文件名为空字符串

python - Django、Google App Engine 和 Postgres 可以协同工作吗?

python - 对多列应用 lambda 函数

python - 如何根据列行拆分数据框

python - Python 和 .NET 之间二进制文件的兼容性