python - Pandas :选择 groupby.sum() 满足条件的行

标签 python pandas pandas-groupby

在 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

最佳答案

使用groupbyfilter

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/

相关文章:

python正则表达式问题

python - 从深度图像生成点云

python - 用 numpy 和测试套件打包

python - 防止我的 RAM 内存达到 100%

python - 如何将多列分组以在 pandas DataFrame 中列出

python - 在过滤和聚合时合并两个 pandas 数据框

python - 按月份和这些月份中的小时对 pandas 数据框进行分组

python - 如何验证一个图在 networkx 中是否有交叉边?

python - 在运行时将数据帧与另一个数据帧合并

python-3.x - 检查一个数据框中的单词是否出现在另一个数据框中(python 3,pandas)