列中唯一值的计数 pandas

8

我有一个数据框,我正在查看其中一个名为“names”的列

array(['Katherine', 'Robert', 'Anne', nan, 'Susan', 'other'], dtype=object)

我正在尝试调用函数来告诉我这一列中每个唯一名称出现的次数,例如如果 Katherine 出现了 223 次等等。

我该如何做?我知道 value_counts 只显示每个唯一值的1次,因为它们是独立的唯一值。


1
value_counts 是你想要的。如果有多个出现,则应该显示它们。如果您认为它没有这样做,请提供一个完整的示例来演示问题。请注意,您需要在实际列上使用 .value_counts(),而不是在唯一值列表上使用。 - BrenBarn
@BrenBarn,这个问题肯定有重复的,已经被问了很多次,还在搜索中。 - EdChum
2个回答

17
如果我理解你的意思正确,你可以使用 pandas.Series.value_counts例如:
import pandas as pd
import numpy as np

s = pd.Series(['Katherine', 'Robert', 'Anne', np.nan, 'Susan', 'other'])

s.value_counts()

Katherine    1
Robert       1
other        1
Anne         1
Susan        1
dtype: int64

你提供的数据中每个姓名只有一个 - 所以这里是一个有多个“Katherine”条目的示例:

s = pd.Series(['Katherine','Katherine','Katherine','Katherine', 'Robert', 'Anne', np.nan, 'Susan', 'other'])

s.value_counts()

Katherine    4
Robert       1
other        1
Anne         1
Susan        1
dtype: int64

应用于您的Dataframe时,您将按以下方式调用:

df['names'].value_counts()

dropna = "False" - birdmw

-1
你可以使用 group by 来实现这个功能:
df[['col1']].groupby(['col1']).agg(['count'])

1
我认为这不会起作用。df[['col1']]将返回一个单列DataFrame。如果您在该列上对DataFrame进行分组,则agg将无法找到任何其他要聚合的列。您可以使用.size()代替agg('count'),但我会选择value_counts - ayhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接