我正在尝试在Pandas(Python2.7)中根据一个递增的计数来分组数据框,该计数每当不再满足条件时就会重置。代码如下:
date condition count
01,01,2018 08:00 A 1
01,01,2018 08:01 A 2
01,01,2018 08:03 A 3
01,01,2018 08:04 B 1
01,01,2018 08:07 B 2
01,01,2018 08:10 B 3
01,01,2018 08:13 B 4
01,01,2018 08:14 C 1
01,01,2018 08:16 C 2
01,01,2018 08:18 C 3
01,01,2018 08:20 C 4
01,01,2018 08:21 C 5
01,01,2018 08:22 A 1
01,01,2018 08:24 A 2
01,01,2018 08:25 B 1
01,01,2018 08:27 B 2
01,01,2018 08:29 B 3
01,01,2018 08:30 C 1
我想要获得:
date condition count
01,01,2018 08:00 A 3
01,01,2018 08:04 B 4
01,01,2018 08:14 C 5
01,01,2018 08:22 A 2
01,01,2018 08:25 B 3
01,01,2018 08:30 C 1
如您所见,仅按A、B、C分组是不可能的,因为分组取决于条件是否发生变化,而不是条件本身。这就是为什么我创建了计数器,可以帮助实现此目的。我尝试过
df2=df.groupby(['condition', 'date']).where(df['count']<df['count'].shift(1)
,for
循环……但我会遇到语法错误、定义错误、键错误或“无法访问'DataFrameGroupBy'对象的可调用属性'where',请尝试使用'apply'方法”等错误,具体取决于尝试的方法。我希望您中的一些人能够建议如何解决这个问题,提前感谢您。
d = {'date':'first', 'condition':'first','count':'last', 'col':'sum', 'another col':'mean'}
。 - jezrael