为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫:根据条件计数进行分组

熊猫:根据条件计数进行分组

慕侠2389804 2021-05-06 13:13:38
我试图根据每次不再满足条件时都会重置的渐进计数对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与比较shiftED值由ne!=含)cumsum,然后通过总aggfirstlast


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


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信