python pandas:执行分组依据和提取唯一实体计数的最简单方法?
python pandas: Simplest way to perform group by and extract count of unique entities?
我的 df:
nr,name
1,sam
2,sam
1,mar
1,sam
2,tom
2,jack
1,mar
如何按 'nr' 分组并计算 'name' 列中的不同名称?在所有语言中这一定是一个非常简单的命令,例如 mysql(groupby 和 distinct 命令),但我在 pandas 中找不到它。有人可以帮忙吗?
你想要nunique
:
In [4]:
df.groupby('nr')['name'].nunique()
Out[4]:
nr
1 2
2 3
Name: name, dtype: int64
所以这个 returns 该列的唯一值的数量 'nr'
使用nunique()
In [13]: df.groupby('nr')['name'].nunique()
Out[13]:
nr
1 2
2 3
或者,使用 pd.Series.nunique
In [14]: df.groupby('nr').agg({'name': pd.Series.nunique})
Out[14]:
name
nr
1 2
2 3
此外,您可以在 agg()
中使用 nunique()
In [15]: df.groupby('nr').agg({'name': lambda x: x.nunique()})
Out[15]:
name
nr
1 2
2 3
有趣的是,有时我注意到 len(x.unique())
比上述方法快得多。
In [16]: df.groupby('nr').agg({'name': lambda x: len(x.unique())})
Out[16]:
name
nr
1 2
2 3
我的 df:
nr,name
1,sam
2,sam
1,mar
1,sam
2,tom
2,jack
1,mar
如何按 'nr' 分组并计算 'name' 列中的不同名称?在所有语言中这一定是一个非常简单的命令,例如 mysql(groupby 和 distinct 命令),但我在 pandas 中找不到它。有人可以帮忙吗?
你想要nunique
:
In [4]:
df.groupby('nr')['name'].nunique()
Out[4]:
nr
1 2
2 3
Name: name, dtype: int64
所以这个 returns 该列的唯一值的数量 'nr'
使用nunique()
In [13]: df.groupby('nr')['name'].nunique()
Out[13]:
nr
1 2
2 3
或者,使用 pd.Series.nunique
In [14]: df.groupby('nr').agg({'name': pd.Series.nunique})
Out[14]:
name
nr
1 2
2 3
此外,您可以在 agg()
nunique()
In [15]: df.groupby('nr').agg({'name': lambda x: x.nunique()})
Out[15]:
name
nr
1 2
2 3
有趣的是,有时我注意到 len(x.unique())
比上述方法快得多。
In [16]: df.groupby('nr').agg({'name': lambda x: len(x.unique())})
Out[16]:
name
nr
1 2
2 3