python熊猫:执行分组和提取唯一实体计数的最简单方法?

python熊猫:执行分组和提取唯一实体计数的最简单方法?,python,pandas,count,group-by,unique,Python,Pandas,Count,Group By,Unique,我的df: 如何按“nr”分组并在“name”列中计算不同的名称?在mysql(groupby和distinct命令)等所有语言中,这一定是一个非常简单的命令,但我在pandas中找不到。有人能帮忙吗?您需要: 因此,这将返回按“nr”分组的列的唯一值的数量,您需要: 因此,这将返回按“nr”分组的列的唯一值的数目。使用nunique() 或者,使用pd.Series.nunique In [4]: df.groupby('nr')['name'].nunique() Out[4]: nr 1

我的df:

如何按“nr”分组并在“name”列中计算不同的名称?在mysql(groupby和distinct命令)等所有语言中,这一定是一个非常简单的命令,但我在pandas中找不到。有人能帮忙吗?

您需要:

因此,这将返回按“nr”分组的列的唯一值的数量,您需要:

因此,这将返回按“nr”分组的列的唯一值的数目。

使用
nunique()

或者,使用
pd.Series.nunique

In [4]:

df.groupby('nr')['name'].nunique()
Out[4]:
nr
1    2
2    3
Name: name, dtype: int64
In [13]: df.groupby('nr')['name'].nunique()
Out[13]:
nr
1     2
2     3
此外,您还可以在
agg()中使用
nunique()

有趣的是,有时我注意到
len(x.unique())
比上述方法快得多

In [15]: df.groupby('nr').agg({'name': lambda x: x.nunique()})
Out[15]:
    name
nr
1      2
2      3
使用
nunique()

或者,使用
pd.Series.nunique

In [4]:

df.groupby('nr')['name'].nunique()
Out[4]:
nr
1    2
2    3
Name: name, dtype: int64
In [13]: df.groupby('nr')['name'].nunique()
Out[13]:
nr
1     2
2     3
此外,您还可以在
agg()中使用
nunique()

有趣的是,有时我注意到
len(x.unique())
比上述方法快得多

In [15]: df.groupby('nr').agg({'name': lambda x: x.nunique()})
Out[15]:
    name
nr
1      2
2      3