我试图根据每次不再满足条件时都会重置的渐进计数对Pandas(Python2.7)中的数据框进行分组。看起来像:date condition count 01,01,2018 08:00 A 101,01,2018 08:01 A 201,01,2018 08:03 A 301,01,2018 08:04 B 101,01,2018 08:07 B 201,01,2018 08:10 B 301,01,2018 08:13 B 401,01,2018 08:14 C 101,01,2018 08:16 C 201,01,2018 08:18 C 301,01,2018 08:20 C 401,01,2018 08:21 C 501,01,2018 08:22 A 101,01,2018 08:24 A 201,01,2018 08:25 B 101,01,2018 08:27 B 201,01,2018 08:29 B 301,01,2018 08:30 C 1我正在尝试获得:date condition count 01,01,2018 08:00 A 301,01,2018 08:04 B 401,01,2018 08:14 C 501,01,2018 08:22 A 201,01,2018 08:25 B 301,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'方法”,以及许多其他错误,尝试。我希望你们中的一些人可以提出解决问题的方法,在此先谢谢您。
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
创建助手Series
与比较shift
ED值由ne
(!=
含)cumsum
,然后通过总agg
用first
和last
:
g = df['condition'].ne(df['condition'].shift()).cumsum()
d = {'date':'first', 'condition':'first','count':'last'}
df = df.reset_index().groupby(g, as_index=False).agg(d)
print (df)
date condition count
0 01,01,2018 08:00 A 3
1 01,01,2018 08:04 B 4
2 01,01,2018 08:14 C 5
3 01,01,2018 08:22 A 2
4 01,01,2018 08:25 B 3
5 01,01,2018 08:30 C 1
添加回答
举报
0/150
提交
取消