Python 如何计算特定名称在数据框列中出现的次数?

Python 如何计算特定名称在数据框列中出现的次数?,python,pandas,Python,Pandas,我有一列名字。我需要计算某个特定名称在该列中出现的次数 Column: Dave John John Thanos Bob 我需要像这样的东西: [in] df['Column'].count_name('John') [out] 2 使用value\u counts()。如果这个问题以前被问过/回答过,我很抱歉,但我无法找到一种搜索它的方法,而不仅仅是告诉我使用value\u counts() 谢谢 仅用于使用numpy.count\u非零加速 import numpy as np n

我有一列名字。我需要计算某个特定名称在该列中出现的次数

Column:
Dave
John
John
Thanos
Bob
我需要像这样的东西:

[in] df['Column'].count_name('John')
[out] 2
使用
value\u counts()。如果这个问题以前被问过/回答过,我很抱歉,但我无法找到一种搜索它的方法,而不仅仅是告诉我使用
value\u counts()


谢谢

仅用于使用
numpy.count\u非零加速

import numpy as np 

np.count_nonzero(df['Column']=='John')
Out[186]: 2
尝试使用以下方法:

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\u非零


显然,使用eq()比使用value_counts()要快,这是显而易见的,因为value_counts计算所有值,而.eq()只计算给定值。

试试
df['Column'].eq('John').sum()
如果我有灵魂,我会向你保证,谢谢你
value_counts()
的性能将低于单个查找的总和。但是,如果需要对不同的
名称多次执行此操作,您应该存储结果并使用
.loc
索引:
s=df['Column'].value\u counts()
后跟
s.loc['John']
,但专家是否仍可以用第二种和第三种方法解释计时的差异?我认为他们显然很相似。。