这个问题在这里已经有答案了:
Pandas计数(不同)等价(8个答案)
两年前关门了。
我要数一数 ID
价值观 domain
我有数据
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条答案
按热度按时间u0njafvf1#
你需要
nunique
:如果你需要的话
strip
'
字符:或者如乔恩·克莱门茨所说:
可以这样保留列名:
不同的是
nunique()
返回一个序列和agg()
返回Dataframe。63lcw9qa2#
通常,要在单个列中计算不同的值,可以使用
Series.value_counts
:要查看一列中有多少个唯一值,请使用
Series.nunique
:要获得所有这些不同的值,可以使用
unique
或者drop_duplicates
,两个函数之间的细微差别是unique
返回anumpy.array
而drop_duplicates
返回一个pandas.Series
:对于这个特定的问题,因为您想计算另一个变量的不同值
groupby
方法提供的其他答案在这里,你也可以简单地删除重复的第一,然后做value_counts()
:xghobddn3#
df.domain.value\u counts()
tzdcorbm4#
你想要不同的号码吗
ID
每domain
,则可以尝试以下操作:输出:
你也可以用
value_counts
但最好的是耶斯雷尔的答案nunique
: