【发布时间】:2019-04-07 10:29:47
【问题描述】:
我在玩Last.fm 数据集。数据集由用户 ID、艺术家姓名和播放次数组成。像这样:
user artist plays
0 00000c289a1829a808ac09c00daf10bc3c4e223b betty blowtorch 2137
1 00000c289a1829a808ac09c00daf10bc3c4e223b die Ärzte 1099
2 00000c289a1829a808ac09c00daf10bc3c4e223b melissa etheridge 897
3 00000c289a1829a808ac09c00daf10bc3c4e223b elvenking 717
4 00000c289a1829a808ac09c00daf10bc3c4e223b juliette & the licks 706
现在,我想做的是稍微清理一下这些数据。由于许多名称不正确,我想删除所有用户播放次数少于 50 次的艺术家。
我想,我应该使用 groupby 并尝试计算它们。但由于我对 pandas 有点陌生,而且我的数据集非常大,所以我想知道删除这些项目的最佳做法是什么。
tl;dr:
什么是删除最低出现艺术家的最佳方法?
PS(编辑):
所需的输出将是一个与输入具有相同架构的数据框,但已播放的艺术家(他们在所有用户上播放的总和)少于特定数量。
PS2: 例如我有这个数据集:
df = pd.DataFrame({
'user': 3 * ('abc'),
'artist': 3 * ('metallica', 'coldplay', 'dfj'),
'plays': [100,24,0,48,135,10,62,38,2]
})
所以我们有这个数据框:
user artist plays
0 a metallica 100
1 a coldplay 24
2 a dfj 3
3 b metallica 48
4 b coldplay 135
5 b dfj 10
6 c metallica 62
7 c coldplay 38
8 c dfj 2
现在“dfj”总共只播放了 15 次。我想删除“dfj”并返回如下内容:
user artist plays
0 a metallica 100
1 a coldplay 24
3 b metallica 48
4 b coldplay 135
6 c metallica 62
7 c coldplay 38
【问题讨论】:
-
您的 groupby 和 count 花费了多少时间?
-
@experiment 在这个数据集上不需要太多时间,也许两分钟。我只是想知道最佳实践,因为我稍后会处理更大的数据。
-
@AmirAghdam,根据您的帖子,期望的输出是什么?
-
@jezrael 现在怎么样? :)
标签: python pandas dataframe filter