python - 具有按日期时间范围排序的列的 Pandas Dataframe 数据透视表
问题描述
我需要制作一个数据透视表,其中的列是日期时间范围。也许我的问题措辞不佳,所以我找不到我需要的答案。
例如说我有数据框:
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 点的交替时段组织列。表中数据应为该期间内持续时间的总和。可以假设 start_time 和 end_time 都在同一时期内。
我一直试图弄清楚如何通过交替的时间段来组织列,但失败了。该表需要可扩展,因此我也无法对其进行硬编码。任何帮助表示赞赏!
解决方案
您可能不一定需要添加范围,因为根据下一列的值似乎很清楚。我会用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
start_time 2020-05-08 06:00:00 2020-05-08 18:00:00 2020-05-09 06:00:00 2020-05-09 18:00:00
error
1 0.0 2.0 4.5 0.0
2 4.0 0.0 0.0 0.0
3 0.0 0.5 0.0 2.5
推荐阅读
- github - 如何在没有此目录的情况下将文件从目录添加到 github?
- precision - 使用 DotLiquid 在液体模板中显示带 9 个小数点的数值
- vb.net - 将数据表导出到 Excel(VB 窗口应用程序)
- facebook - iOS 13/Facebook SDK 错误“无法找到有效的 UIWindow”
- vb.net - 我在弄清楚如何在数组中打印时遇到问题
- c# - Issue with find and replace apostrophe( ' ) in a Word Docx using OpenXML and Regex
- sql - In proc sql when using SELECT * and GROUP BY, the result is not collapsed
- android-studio - Not recieving any response from Volley
- powershell - Count the scale of a given decimal
- ios - Is there any way to get the key type of a SecKey?