如何在pandas数据帧中执行where和distinct count操作?

时间:2017-01-05 23:12:12

标签: pandas dataframe

我有下面的sql查询,必须将其转换为等效的pandas查询才能执行相同的操作。

从年龄= 12且性别=" M"的学生中选择COUNT(DISTINCT名称)

我尝试使用nunique(),但不知道如何结合条件。

2 个答案:

答案 0 :(得分:2)

您可以使用查询或布尔索引,然后使用nunique获取唯一项目的数量。

df.query('age == 12 & gender == "M"')['name'].nunique()

答案 1 :(得分:0)

有许多不同的答案。我喜欢尝试提供pandasnumpy面向的答案。我绝不暗示这些是 的答案,只是我的看法。

<强> numpy
我的解决方案不规范!

a = df.age.values == 12
g = df.gender.values == 'M'
len(np.unique(df.name.values[a & g]))

<强> pandas
我的解决方案不规范!

a = df.age.eq(12)
g = df.gender.eq('M')
df.name.loc[a & g].nunique()