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”的新列?您需要提供一些数据或示例数据框。我给出了示例数据的答案,因为无法使用注释。