Python 熊猫时间序列分析-总结数据帧中的状态变化/删除冗余日期
我有一个如下所示的数据框架(下面的数据经过简化以提供一个简单的示例): 其中项目A在2019-05-01 04:30:00至2019-05-10 04:30:00期间处于状态1,然后在2019-05-10 04:30:00至2019-05-13 04:30:00期间处于状态2,然后在2019-05-13 04:30:00至2019-05-25 04:30:00期间返回状态1 我试图将数据帧简化为只有3行提供相同的信息,使用状态第一次出现时的开始时间,然后在切换到新状态之前该状态最后一次出现时的结束时间 以下是我想要的结果:Python 熊猫时间序列分析-总结数据帧中的状态变化/删除冗余日期,python,pandas,Python,Pandas,我有一个如下所示的数据框架(下面的数据经过简化以提供一个简单的示例): 其中项目A在2019-05-01 04:30:00至2019-05-10 04:30:00期间处于状态1,然后在2019-05-10 04:30:00至2019-05-13 04:30:00期间处于状态2,然后在2019-05-13 04:30:00至2019-05-25 04:30:00期间返回状态1 我试图将数据帧简化为只有3行提供相同的信息,使用状态第一次出现时的开始时间,然后在切换到新状态之前该状态最后一次出现时的结
df =
item state startTime endTime
A 1 2019-05-01 04:30:00 2019-05-10 04:30:00
A 2 2019-05-10 04:30:00 2019-05-13 04:30:00
A 1 2019-05-13 04:30:00 2019-05-25 04:30:00
我正在处理的实际数据帧可能有数千行长,因此我希望能够快速完成此操作。希望有人能给我指引正确的方向,或者给我推荐我正在寻找的熊猫业务?我对熊猫并不陌生,但不知道如何处理这个问题,我想避免在这里重新发明轮子
提前感谢您的帮助。您可以使用
diff
和cumsum
创建groupby
键,然后使用agg
d={'item':'first','state':'first','startTime':'min','endTime':'max'}
df.groupby([df.item,df.state.diff().ne(0).cumsum()]).agg(d)
您可以使用
diff
和cumsum
创建groupby
键,然后使用agg
d={'item':'first','state':'first','startTime':'min','endTime':'max'}
df.groupby([df.item,df.state.diff().ne(0).cumsum()]).agg(d)