【发布时间】:2021-01-20 20:50:15
【问题描述】:
我有使用以下查询提取的 31 天时间序列数据集。
import pymysql
import pymysql.cursors
import pandas as pd
import sys
import csv
conn = pymysql.connect(host='',user='',password='',db='',port='',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)
dbquery = """SELECT * FROM 'table_name' where 'date' between ('2012-03-01 00:00:00') and ('2012-03-31 23:59:59') """
df = pd.read_sql_query(dbquery, conn)
df.to_csv('one_month_timeseries_data.csv', sep=',', encoding='utf-8')
提取的数据帧结构如下。
id date value
1 2012-01-01 00:00:00 33
5 2012-01-02 00:00:01 15
.
.
.
.
2 2012-01-30 23:59:58 10
5 2012-01-31 23:59:59 5
我想进一步循环遍历整个数据集的每一天(00:00:00 - 23:59:59),并将数据帧分成 3 个独立的数据帧,每个数据帧间隔 8 小时,每个数据帧分组为 sleep (00:00:00 - 07:59:59), 工作 (08:00:00 - 15:59:59), 家 (16:00: 00 - 23:59:59)。
预期输出:
例如,第 1 天:
day1_df_sleep:
id date value
1 2012-01-01 00:00:00 33
.
.
.
.
3 2012-01-01 07:59:59 10
day1_df_work:
id date value
1 2012-01-01 08:00:00 12
.
.
.
.
4 2012-01-01 15:59:59 50
day1_df_home:
id date value
1 2012-01-01 16:00:00 12
.
.
.
.
4 2012-01-01 23:59:59 50
等..直到第 31 天
我已经阅读了 pandas 的 date_range() 函数,但我不确定在只有日期列的情况下如何最好地实现它。
如何最好地使用 pandas 实现这一点?
【问题讨论】:
标签: python pandas dataframe time-series