如何在 Python 中将'datetime.timedelta'
对象转换为 a ?'pandas.tseries.offsets'
例如:datetime.timedelta(1)
到to_offset('1D')
?
长话短说:我想绘制一个带有 OHLC 条的 Pandas DataFrame,但是当数据点太多时,条太细,图表变得不可读。在这种情况下,我想计算周期较长的柱,以便在我的图表上得到少于 100 个柱。
给定一个 DataFrame df(数据可以是秒到月周期之间的任何数据)
第 1 步:获取数据帧周期:
source_period = min([t2-t1 for t2, t1 in zip(df.index[1:], df.index[:-1])])
(我不能在这里使用 df.index.freq)
第 2 步:估计目标期间:
target_period = source_period * float(len(df.index))/100
第 3 步:分组合并数据
grouped_df = df.groupby(pd.TimeGrouper(period_convert(target_period ))).agg(ohlc_combine)
我想念period_convert
我真的不知道从哪里开始的功能。
为了有一个起点,我的可笑丑陋的黑客这样做:
target_datapoints = 100
source_period = min([t2-t1 for t2, t1 in zip(df.index[1:], df.index[:-1])])
target_period = source_period.total_seconds() * float(len(df.index)) / target_datapoints
target_offset = str(int(target_period)) + 'S'
target_df = df.groupby(pd.TimeGrouper(target_offset)).agg(ohlc_combine)
问题:丑陋,缓慢,前卫的案件没有处理......