我有一列名字。我需要计算一个特定名称在该列中出现了多少次。
Column:
Dave
John
John
Thanos
Bob
我需要类似的东西:
[in] df['Column'].count_name('John')
[out] 2
使用value_counts()
不起作用,因为该列中有成千上万个名称,其中许多仅出现一次。很抱歉,如果您之前曾问过/回答过这个问题,但是我一直无法找到一种搜索方法,不仅能给我答案,还可以告诉我使用value_counts()
。
谢谢!
答案 0 :(得分:1)
只需使用numpy.count_nonzero
import numpy as np
np.count_nonzero(df['Column']=='John')
Out[186]: 2
答案 1 :(得分:0)
尝试使用此:
df['Column:'].value_counts()['John']
In [6]: %timeit df[0].value_counts()['John']
1000 loops, best of 3: 548 µs per loop
In [7]: %timeit df[0].eq('John').sum()
The slowest run took 8.19 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 311 µs per loop
In [8]: %timeit np.count_nonzero(df[0]=='John')
10000 loops, best of 3: 162 µs per loop
编辑:最快使用np.count_nonzero ...
显然,使用eq()比使用value_counts()更快,这很明显,因为value_counts计算所有值的计数,而.eq()仅计算给定值。