熊猫groupby在过滤结果不起作用

时间:2019-10-25 04:45:00

标签: python pandas

我的df有两列,分别是iddate

例如,

   id              date
0  A  2019-10-01 10:25
1  B  2019-10-17 16:16
2  A  2019-09-28 09:29
3  C  2019-08-01 08:01
4  C  2019-09-17 17:05
5  C  2019-09-20 11:20   

我想按date过滤df,然后按id进行分组,最后只将前N个结果保存到newdf中。

但是,过滤效果很好,但是分组不适用于以下代码:

new_df = df[df.date >= '2019-09-01 00:00'].groupby('id').head(3)

这段代码得到这样的结果

   id              date
0  A  2019-10-01 10:25
1  B  2019-10-17 16:16
2  A  2019-09-28 09:29
4  C  2019-09-17 17:05
5  C  2019-09-20 11:20

但理想情况下,newdf应该具有以下结果:

   id              date
0  A  2019-10-01 10:25
1  B  2019-10-17 16:16
4  C  2019-09-17 17:05

没有编译错误,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您需要head(1)。在groupby上,head适用于每个组。 head(3)表示您选择每个组的前3行,而所需的输出显示您希望每个组的前1行

df[df.date >= '2019-09-01 00:00'].groupby('id').head(1)

Out[725]:
  id                date
0  A 2019-10-01 10:25:00
1  B 2019-10-17 16:16:00
4  C 2019-09-17 17:05:00