熊猫在多列中发现特定值的出现

时间:2020-07-06 18:26:29

标签: python pandas group-by count

我想查找特定时间下值为0的ID的数量。 我的df看起来像这样:

    datetime          id          value        other_info
   05/01/12:00       001            1              n/a
   05/01/12:00       001            0              n/a
   05/01/12:30       001            1              n/a
   05/01/12:00       002            0              n/a
   05/01/12:30       002            0              n/a

我的预期输出为:

   datetime          id          zero_count
   05/01/12:00       001            1
   05/01/12:00       002            1
   05/01/12:30       002            1

我认为先按时间再按id分组,然后在value等于0的情况下进行计数是可行的,但这使我在整个数据帧中的数字为0,而不是与日期时间和id对应的0。 / p>

我刚接触熊猫,所以我不知道是否有内置的东西可以帮助我。我非常感谢朝着正确方向前进。

2 个答案:

答案 0 :(得分:3)

您可以先过滤数据,然后再分组:

(df[df['value']==0].groupby(['datetime','id']).size()
    .reset_index(name='zero_count')
)

输出:

      datetime  id  zero_count
0  05/01/12:00   1           1
1  05/01/12:00   2           1
2  05/01/12:30   2           1

答案 1 :(得分:0)

你可以做

s=df.value.eq(0).astype(int).groupby([df.datetime,df.id]).sum().reset_index()
      datetime  id  value
0  05/01/12:00   1      1
1  05/01/12:00   2      1
2  05/01/12:30   1      0
3  05/01/12:30   2      1