如何解决计算熊猫中多个场景的持续时间
我有一个具有多个 id 的数据框,我想通过某个滑动窗口框架对其进行切片,并计算出现在该窗口中的每个 id 的持续时间。某些时间片只有一个 ID,而其他时间片有多个 ID。
对于出现多个 id 的情况,我可以捕获每个 id 的持续时间,如下所示。
具有多个 ID 的数据框
id,date,value
1,2012-01-01 00:09:45,1
1,2012-01-01 00:09:50,1
2,2012-01-01 00:09:55,2012-01-01 00:10:00,2012-01-01 00:30:10,2012-01-01 00:30:15,1
3,2012-01-01 00:30:20,2012-01-01 00:30:25,2012-01-01 00:30:30,2012-01-01 00:30:45,1
import pandas as pd
df = pd.read_csv('df.csv')
df['date'] = pd.to_datetime(df['date'])
diff_ids = df['id'] != df['id'].shift(1)
df = df[diff_ids].copy()
df['start'] = df['date']
df['end'] = df['date'].shift(-1)
df['duration'] = df['end'] - df['start']
print(df)
输出
id date value start end duration
1 2012-01-01 00:09:45 1 2012-01-01 00:09:45 2012-01-01 00:09:55 00:00:10
2 2012-01-01 00:09:55 1 2012-01-01 00:09:55 2012-01-01 00:30:20 00:20:25
3 2012-01-01 00:30:20 1 2012-01-01 00:30:20 2012-01-01 00:30:45 00:00:25
1 2012-01-01 00:30:45 1 2012-01-01 00:30:45 NaT NaT
在上面相同的逻辑中,我怎样才能满足下面只出现一个 id 的情况
具有单个 id 的数据框
id,value
2,1
预期输出:
id date value start end duration
2 2012-01-01 00:09:45 1 2012-01-01 00:09:45 2012-01-01 00:30:45 00:21:10
解决方法
如果只有一个 ID,您可以这样做:
.ag-root-wrapper {
border: solid 1px;
border-color: var(--ag-border-color,#fffff) !important;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。