此问题在此处已有答案:
Pandas 'count(distinct)' equivalent(11个回答)
5年前关闭。
我需要计算每个domain
中唯一的ID
值。
我有数据:
ID, domain
123, vk.com
123, vk.com
123, twitter.com
456, vk.com'
456, facebook.com
456, vk.com
456, google.com
789, twitter.com
789, vk.com
字符串
我试试df.groupby(['domain', 'ID']).count()
但我想得到
domain count
vk.com 3
twitter.com 2
facebook.com 1
google.com 1
型
4条答案
按热度按时间mlmc2os51#
您需要
nunique
:字符串
如果需要
strip
'
字符:型
正如Jon Clements所说:
型
您可以像这样保留列名:
型
不同之处在于
nunique()
返回一个Series,而agg()
返回一个DataFrame。sbtkgmzw2#
一般来说,要计算单列中的非重复值,可以使用
Series.value_counts
:字符串
要查看一列中有多少个唯一值,请使用
Series.nunique
:型
要获得所有这些不同的值,可以使用
unique
或drop_duplicates
,这两个函数之间的细微差异是unique
返回numpy.array
,而drop_duplicates
返回pandas.Series
:型
对于这个特定的问题,因为你想计算另一个变量的不同值,除了这里其他答案提供的
groupby
方法外,你也可以简单地先删除重复项,然后再执行value_counts()
:型
trnvg8h33#
df.domain.value_counts()
字符串
zour9fqk4#
如果我理解正确的话,你想要每个
domain
的不同ID
s的数量。然后你可以试试这个:字符串
输出量:
型
你也可以使用
value_counts
,它的效率稍低。但最好的是Jezrael使用nunique
的答案:型