Python 使用按日期时间范围排序的列创建Dataframe数据透视表
我需要制作一个透视表,其中列是日期时间范围。也许我的问题措词不当,所以找不到我需要的答案 例如,假设我有数据帧:Python 使用按日期时间范围排序的列创建Dataframe数据透视表,python,pandas,datetime,pivot-table,Python,Pandas,Datetime,Pivot Table,我需要制作一个透视表,其中列是日期时间范围。也许我的问题措词不当,所以找不到我需要的答案 例如,假设我有数据帧: start_time end_time duration_hours error 2020-05-08 20:04:00 2020-05-08 22:04:00 2 1 2020-05-09 07:22:00 2020-05-09 08:52:00 1.5
start_time end_time duration_hours error
2020-05-08 20:04:00 2020-05-08 22:04:00 2 1
2020-05-09 07:22:00 2020-05-09 08:52:00 1.5 1
2020-05-09 13:20:00 2020-05-09 15:20:00 3 1
2020-05-08 11:45:00 2020-05-08 15:45:00 4 2
2020-05-08 18:30:00 2020-05-08 19:00:00 0.5 3
2020-05-09 18:15:00 2020-05-09 20:45:00 2.5 3
我希望结果是:
timeframe
error 2020-05-08 06:00 ~ 2020-05-08 18:00 2020-05-08 18:00 ~ 2020-05-09 06:00 2020-05-09 06:00 ~ 2020-05-09 18:00 2020-05-09 18:00 ~ 2020-05-10 06:00
1 0 2 4.5 0
2 4 0 0 0
3 0 0.5 0 2.5
基本上,我希望将错误作为索引,并按每天早上6点到下午6点和下午6点到早上6点的交替时段组织列。表中的数据应为该期间内持续时间的总和。可以假设开始时间和结束时间都在同一时间段内
我一直在想如何通过交替的句点来组织专栏,但失败了。这个表需要可伸缩,所以我也不能硬编码它。感谢您的帮助 您可能不一定需要添加范围,因为根据下一列的值似乎很清楚。我会用
error
和pd.Grouper
进行分组。然后,从那里创建一个透视表
df1 = df.groupby(['error', pd.Grouper(key='start_time', freq='12H', base=6)])['duration_hours'].sum().reset_index().pivot_table(index='error', columns='start_time', values='duration_hours').fillna(0)
df1
您可能不一定需要添加范围,因为根据下一列的值似乎很清楚。我会用
error
和pd.Grouper
进行分组。然后,从那里创建一个透视表
df1 = df.groupby(['error', pd.Grouper(key='start_time', freq='12H', base=6)])['duration_hours'].sum().reset_index().pivot_table(index='error', columns='start_time', values='duration_hours').fillna(0)
df1
请提供a,以及当前和预期输出。@PoHuang我是否回答了您的问题。您能通过单击复选标记接受答案吗?请提供a,以及当前和预期的输出。@PoHuang我是否回答了您的问题。你能通过点击复选标记接受答案吗?