Python 查找列值在数据集中出现的次数

Python 查找列值在数据集中出现的次数,python,pandas,Python,Pandas,我试图按名称列和流行程度对数据进行排序 现在,我正在这样做: df['Count'] = df.apply(lambda x: len(df[df['Name'] == x['Name']]), axis=1) df[df['Count'] > 50][['Name', 'Description', 'Count']].drop_duplicates('Name').sort_values('Count', ascending=False).head(100) 但是,此查询速度非常慢,需

我试图按
名称
列和流行程度对数据进行排序

现在,我正在这样做:

df['Count'] = df.apply(lambda x: len(df[df['Name'] == x['Name']]), axis=1)
df[df['Count'] > 50][['Name', 'Description', 'Count']].drop_duplicates('Name').sort_values('Count', ascending=False).head(100)
但是,此查询速度非常慢,需要数小时才能运行

有什么更有效的方法可以做到这一点?

您可以使用

输出

1    2
0    1
Name: b, dtype: int64
你可以用

输出

1    2
0    1
Name: b, dtype: int64
试试这个:

a = ["jim"]*5  + ["jane"]*10 + ["john"]*15 
n = pd.Series(a)

sorted((n.value_counts()[n.value_counts() > 5]).index)

['jane', 'john']
试试这个:

a = ["jim"]*5  + ["jane"]*10 + ["john"]*15 
n = pd.Series(a)

sorted((n.value_counts()[n.value_counts() > 5]).index)

['jane', 'john']

我一直在寻找的解决方案是:

df['Count'] = df.groupby('Name')['Name'].transform('count')

非常感谢@Lynob提供了一个带有答案的链接。

我一直在寻找的解决方案是:

df['Count'] = df.groupby('Name')['Name'].transform('count')

非常感谢@Lynob提供了一个带有答案的链接。

请提供示例数据框@Lynob工作得很有魅力。请提供示例数据框@Lynob工作得很有魅力。对,但我还需要df的其他字段(“名称”、“描述”)
value\u counts
省略了这些。对,但我还需要df中的其他字段('Name','Description')<代码>值\u计数忽略了这些。我仍然希望从我的df中知道“名称”、“描述”等字段。所以我想,将
value\u counts()
应用于我的
df的方法是什么。应用
方法创建名为“counts”的新列?你需要提供一些数据或示例数据框。我给出了示例数据的答案,因为无法使用注释。我仍然希望从我的df中了解“Name”、“Description”等字段。所以我想,将
value\u counts()
应用于我的
df的方法是什么。应用
方法创建名为“counts”的新列?您需要提供一些数据或示例数据框。我给出了示例数据的答案,因为无法使用注释。