给定一个包含两列的数据框:用户和代码,如何过滤掉他们至少不具有给定代码的x个条目的用户条目?
E.g。我想过滤掉所有用户,因为他们至少有5次出现在某种类型的用户:
User Type
A Alpha
A Alpha
A Alpha
A Alpha
A Alpha
A Beta
A Beta
A Beta
B Alpha
B Alpha
B Alpha
B Alpha
B Alpha
在这里,我想用Beta代码过滤掉(删除)4x A(这里只有4次),同时保留其他所有内容。
谢谢!
答案 0 :(得分:1)
您可以groupby
使用'用户'和'键入'和filter
:
In [91]:
df.groupby(['User', 'Type']).filter(lambda x: len(x) > 4)
Out[91]:
User Type
0 A Alpha
1 A Alpha
2 A Alpha
3 A Alpha
4 A Alpha
8 B Alpha
9 B Alpha
10 B Alpha
11 B Alpha
12 B Alpha
答案 1 :(得分:1)
如何过滤掉他们至少不具有给定代码的x个条目的用户条目?
如果您想知道保留或删除了哪些:
# counts
grouped = df.groupby(['User', 'Type']).apply(lambda g : len(g) > 4)
grouped = grouped.reset_index(name='keep')
# merge back and filter
data = df.merge(grouped).query('keep == True')
removed = df.merge(grouped).query('keep == False')