删除对应于小于指定大小的组的行

时间:2018-12-18 12:19:26

标签: python pandas dataframe filter

我有DataFrame个答案,分别是100个questions_id和50个user_id。每行代表来自特定用户的单个问题。桌子看起来像这样。

user_id | question_id | timetaken | answer_1 | answer_2 |
1015    | 1           | 30        | A        | C        |
1015    | 2           | 45        | B        | B        |
1016    | 1           | 15        | A        | A        |
1016    | 2           | 55        | A        | D        |

我正试图筛选出未完成测试的用户。我这样做的想法是计算每个用户出现在表中的次数,如果user_id 1015在user_id列中出现了100次,我知道他们完成了100个问题。不幸的是,由于问题是随机的,因此我无法使用question_id进行过滤,因此用户可以回答5个问题,其中一个问题可能具有question_id = 100

我以为这是我的solution,但无法计算出user_id的出现次数。

2 个答案:

答案 0 :(得分:2)

使用boolean indexing仅过滤计数多于MultipartFile uploadedFile = ((MultipartHttpServletRequest)request).getFile('file_name') InputStream inputStream = new ByteArrayInputStream(uploadedFile?.getBytes()) 次的行,transformsize的返回值100与原始{{ 1}}:

Series

性能:取决于行数和组的长度,因此最好在真实数据中进行测试:

DataFrame

答案 1 :(得分:2)

使用groupbyfilter,它们非常简洁,目的就是如此。

df1 = df.groupby('user_id').filter(lambda x: len(x) > 100)

为获得更好的性能,请使用np.uniquemap

m = dict(zip(*np.unique(df.user_id, return_counts=True)))
df[df['user_id'].map(m) > 100]