如何处理 Pandas 中的记录以查找'true'的总时间,然后'false',然后再次查找特定日期的排序数据'true'



输入数据格式如下。

状态
日期
2021年1月18日下午7:26:9 UTC True
2021年1月18日下午7:24:56 UTC 正确
2021年1月18日下午7:23:42 UTC 正确
2020年10月27日下午9:36:52 UTC 错误
2020年10月27日下午8:23:16 UTC 错误
2020年10月27日下午7:48:20 UTC 错误
2021年10月27日下午6:24:56 UTC True
2021年10月27日下午5:24:56 UTC True
2020年10月28日下午7:48:20 UTC,错误

将列转换为日期时间,并通过Series.dt.date和辅助列g按日期聚合minmax,连续True秒和False秒,然后相减并获得时间增量。

df['date'] = pd.to_datetime(df['date'])
df['g'] = df['State'].ne(df['State'].shift()).cumsum()
df = df.groupby([df['date'].dt.date, 'State','g'], sort=False)['date'].agg(['max','min'])
df = df['max'].sub(df['min']).reset_index(level=2, drop=True).reset_index(name='td')
print (df)
date  State              td
0  2021-01-18   True 0 days 00:02:27
1  2020-10-27  False 0 days 01:48:32
2  2021-10-27   True 0 days 01:00:00
3  2020-10-28  False 0 days 00:00:00

如果需要秒,添加Series.dt.total_seconds:

df['sec'] = df['td'].dt.total_seconds()
print (df)
date  State      td
0  2021-01-18   True   147.0
1  2020-10-27  False  6512.0
2  2021-10-27   True  3600.0
3  2020-10-28  False     0.0

相关内容

  • 没有找到相关文章

最新更新