pandas - 在列下,计算特定值的总数,而不是使用 value_counts()

数据挖掘 Python 熊猫
2022-02-15 14:16:09
value_counts()

函数输出列中所有唯一值的数量,例如

 apple   3
 orange  2
 banana  1

我只想搜索 (value = 'apple') 的总数,哪个函数可以替换 value_counts()?

2个回答

你有很多方法可以做到这一点。您不会看到性能上有很大差异。我的建议是使用对您或您的团队更方便的任何东西。

import pandas as pd
import numpy as np

#Let's create a dataframe with 10 million integers from 0 to 100
df = pd.DataFrame(np.random.randint(0,100,size=(10000000, 1)), columns=list('A'))

#And now count the value 5 with 4 different ways

%timeit df[df.A == 5].shape[0]
10 loops, best of 3: 25.4 ms per loop

%timeit len(df[df.A == 5])
10 loops, best of 3: 25.4 ms per loop

%timeit len(df[df.A == 5].index)
10 loops, best of 3: 25.6 ms per loop

%timeit df['A'].value_counts()[5]
10 loops, best of 3: 149 ms per loop

如您所见,只有最后一个需要更多时间来运行。

编辑:除了你的评论,你可以试试这个

df = data.groupby('a_1').get_group(a_2)['suffix']
len(df[df.suffix == 'a_3'])

您可以过滤一个系列,然后应用 value_count。

例如:

fruits[fruits == "apple"].value_counts()