在 pandas 中,我有一个以下形式的数据框:
>>> import pandas as pd
>>> df = pd.DataFrame({'ID':[51,51,51,24,24,24,31], 'x':[0,1,0,0,1,1,0]})
>>> df
ID x
51 0
51 1
51 0
24 0
24 1
24 1
31 0
对于每个“ID”,“x”的值都被记录了几次,它是 0 或 1。我想从 df
中选择那些包含“ID”的行 ' x' 至少两次为 1。
对于每个“ID”,我设法计算出“x”为 1 的次数,通过
>>> df.groupby('ID')['x'].sum()
ID
51 1
24 2
31 0
但我不知道如何从这里开始。我想要以下输出:
ID x
24 0
24 1
24 1
最佳答案
使用groupby
和filter
df.groupby('ID').filter(lambda s: s.x.sum()>=2)
输出:
ID x
3 24 0
4 24 1
5 24 1
关于python - Pandas :选择 groupby.sum() 满足条件的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531696/