在数据框中查找一列中条件值的出现并计数另一列中的值

时间:2019-05-21 12:13:15

标签: python-3.x pandas pandas-groupby

我有一个数据框,其中包含用户ID,星期数和X列,如下所示:

如果X大于3,我要按userId分组,持续3周。

我曾尝试在熊猫中使用groupby和lambda,但我被困住了

weekly_X = df.groupby(['Userid','Week #'], as_index=False)
UserIds Week  X
123      14   3
123      15   4
123      16   7
123      17   2
123      18   1
456      14   4
456      15   5
456      16   11
456      17   2
456      18   6

我希望得到的结果是一个包含用户456和情况发生几周的数据框。

2 个答案:

答案 0 :(得分:1)

df_3 = df.groupby('UserIds').apply(lambda x: (x.X > 3).sum() > 3).to_frame('ID_want').reset_index()
df = df[df.UserIds.isin(df_3.loc[df_3.ID_want == 1,'UserIds'])]

答案 1 :(得分:0)

使用汇总的3获取更大的值,例如sum,然后过滤更大的值,例如3

s = df['X'].gt(3).astype(int).groupby(df['UserIds']).sum()

out = s[s.gt(3)].reset_index(name='count')
print (out)
   UserIds  count
0      456      4