【发布时间】:2020-07-08 13:03:03
【问题描述】:
我想将开始/结束(或开/关)时间的数据帧转换为第二个数据帧,其中每个任意时间段的总“开启时间”百分比。在这种情况下,该时间段是一个小时。我已经编写了一个非常低效的解决方案,涉及循环,并且正在寻找更好的解决方案。
df1
| Start | End |
|---------------------|---------------------|
| 2020-02-01T00:00:00 | 2020-02-01T02:40:00 |
| 2020-02-01T02:55:00 | 2020-02-01T03:17:00 |
| 2020-02-01T03:27:00 | 2020-02-01T04:12:00 |
| 2020-02-01T04:20:00 | 2020-02-01T04:29:00 |
| 2020-02-01T05:19:00 | 2020-02-01T05:23:00 |
df2
| Time | Percent |
|---------------------|---------|
| 2020-02-01T00:00:00 | 1 |
| 2020-02-01T00:01:00 | 1 |
| 2020-02-01T00:02:00 | 0.750 |
| 2020-02-01T00:03:00 | 0.833 |
| 2020-02-01T00:04:00 | 0.350 |
| 2020-02-01T00:05:00 | 0.066 |
【问题讨论】:
-
df1['End'].sub(df1['Start'])/pd.to_timedelta('1H')? -
感谢 Quang,但这仅告诉我每个开始/结束对的持续时间,并没有解决将“准时”分解为一小时长的垃圾箱的问题。 df2 的行数预计与 df1 不同。
-
( 100 * timedelta(hours=1) / (df1.End-df1.Start).resample('1H').sum() )?
-
你能提供一些示例数据吗?
-
感谢 jonnor,帖子中的两个表(df1 和 df2)是实际数据的一部分。
标签: python pandas dataframe time-series