【发布时间】:2024-08-01 08:05:02
【问题描述】:
我有一个时间序列 pandas 数据框,我想按月和年进行分区。我的想法是获取一个日期时间列表,作为索引,但中断不会发生在月初的 0:00 开始..
monthly_partitons=np.unique(df.index.values.astype('datetime64[M]')).tolist()
da=dd.from_pandas(df, npartitions=1)
如何将索引设置为从每个月开始?我试过npartitions=len(monthly_partitions),但我意识到这是错误的,因为它可能不会在开始时的日期分区。应该如何确保它在当月的第一个日期分区?
更新:
使用da=da.repartition(freq='1M')将数据从10分钟数据重新采样到1分钟数据见下文
Dask DataFrame Structure:
Open High Low Close Vol OI VI
npartitions=5037050
2008-05-04 18:00:00 float64 float64 float64 float64 int64 int64 float64 int32
2008-05-04 18:01:00 ... ... ... ... ... ... ... ...
... ... ... ... ... ... ... ... ...
2017-12-01 16:49:00 ... ... ... ... ... ... ... ...
2017-12-01 16:50:00 ... ... ... ... ... ... ... ...
Dask Name: repartition-merge, 10074101 tasks
更新 2:
这是重现问题的代码
import pandas as pd
import datetime as dt
import dask as dsk
import numpy as np
import dask.dataframe as dd
ts=pd.date_range("2015-01-01 00:00", " 2015-05-01 23:50", freq="10min")
df = pd.DataFrame(np.random.randint(0,100,size=(len(ts),4)), columns=list('ABCD'), index=ts)
ddf=dd.from_pandas(df,npartitions=1)
ddf=ddf.repartition(freq='1M')
ddf
【问题讨论】: