Python 有什么好方法可以对时间序列数据块执行计算和赋值吗?
我想对时间序列数据执行一些计算,并在特定行上复制输出,我尝试了一些方法,比如重新采样数据以获得值。 下面是我试图获得的代码和输出。这将是非常有帮助的,得到一些专家提示,以有效地做事情 问题:1。我想从有15分钟时间框架的数据集中获取当天的“高”、“低”和“收盘”。 2.然后计算“(高+低+收盘)/3”,并将该值复制到第二天15分钟的时间范围内。 等等 以下是实际数据。 我尝试重新采样数据,得到高、低和接近的值,然后分别计算h+L+C/3,然后通过打字复制。 下面是重新采样的代码Python 有什么好方法可以对时间序列数据块执行计算和赋值吗?,python,pandas,datetime,time-series,ohlc,Python,Pandas,Datetime,Time Series,Ohlc,我想对时间序列数据执行一些计算,并在特定行上复制输出,我尝试了一些方法,比如重新采样数据以获得值。 下面是我试图获得的代码和输出。这将是非常有帮助的,得到一些专家提示,以有效地做事情 问题:1。我想从有15分钟时间框架的数据集中获取当天的“高”、“低”和“收盘”。 2.然后计算“(高+低+收盘)/3”,并将该值复制到第二天15分钟的时间范围内。 等等 以下是实际数据。 我尝试重新采样数据,得到高、低和接近的值,然后分别计算h+L+C/3,然后通过打字复制。 下面是重新采样的代码 df1 = df
df1 = df.resample('1D', # on='col name' if the date column is not an index
origin='start').agg({'Open':'first',
'Close':'last',
'Low':'min',
'High':'max'})
有没有什么好方法可以轻松获得所需的df。
下面是所需的输出
for date 2021-01-04 Day's High = 2591.95, Low = 2533.15, Close = 2578.5
(High+Low+Close)/3 = 2567.68
the value 2567.68 get copied to next day 2021-01-05 showing below
then wants to calculate H+L+C/3 on 2021-04-05 and then copy it to next day's 15 min time frame data shown below. and so on
...........................................................................
Datetime | Open | High | Low |Close | ((H+L+C)/3) |
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
2021-01-04 09:15:00+05:30 2575.05 2591.95 2570.0 2571.5 ------Day1
2021-01-04 09:30:00+05:30 2571.35 2575.05 2561.05 2569.35
2021-01-04 09:45:00+05:30 2568.6 2579.8 2568.6 2576.25
2021-01-04 10:00:00+05:30 2576.25 2578.0 2567.0 2567.8
2021-01-04 10:15:00+05:30 2568.25 2570.0 2564.25 2565.0
2021-01-04 10:30:00+05:30 2565.0 2565.15 2556.5 2557.45
2021-01-04 10:45:00+05:30 2558.35 2559.0 2543.85 2553.85
2021-01-04 11:00:00+05:30 2553.85 2555.55 2533.15 2553.55
2021-01-04 11:15:00+05:30 2553.5 2555.9 2547.25 2551.85
2021-01-04 11:30:00+05:30 2551.85 2576.7 2550.15 2571.8
2021-01-04 11:45:00+05:30 2571.45 2571.8 2565.1 2565.7
2021-01-04 12:00:00+05:30 2566.25 2569.9 2561.55 2565.45
2021-01-04 12:15:00+05:30 2564.65 2566.1 2560.25 2562.5
2021-01-04 12:30:00+05:30 2562.5 2568.15 2562.15 2566.0
2021-01-04 12:45:00+05:30 2566.45 2569.9 2565.1 2567.8
2021-01-04 13:00:00+05:30 2567.9 2568.0 2561.9 2565.0
2021-01-04 13:15:00+05:30 2565.0 2565.0 2556.4 2558.0
2021-01-04 13:30:00+05:30 2559.1 2567.9 2557.2 2565.65
2021-01-04 13:45:00+05:30 2565.8 2571.1 2565.0 2571.0
2021-01-04 14:00:00+05:30 2570.95 2575.0 2565.1 2572.75
2021-01-04 14:15:00+05:30 2572.4 2576.0 2567.45 2575.35
2021-01-04 14:30:00+05:30 2575.6 2580.8 2570.95 2578.65
2021-01-04 14:45:00+05:30 2579.25 2584.0 2575.55 2581.8
2021-01-04 15:00:00+05:30 2581.7 2582.7 2575.0 2579.7
2021-01-04 15:15:00+05:30 2579.75 2582.65 2575.0 2578.5
2021-01-05 09:15:00+05:30 2581.15 2623.45 2573.3 2611.0- 2567.68 -------day2
2021-01-05 09:30:00+05:30 2611.45 2628.0 2609.0 2628.0 2567.68
2021-01-05 09:45:00+05:30 2627.0 2635.0 2622.5 2623.0 2567.68
2021-01-05 10:00:00+05:30 2622.65 2630.0 2621.95 2626.7 2567.68
2021-01-05 10:15:00+05:30 2626.65 2628.0 2617.0 2617.4 2567.68
2021-01-05 10:30:00+05:30 2617.4 2624.55 2615.0 2616.95 2567.68
2021-01-05 10:45:00+05:30 2616.95 2627.0 2615.1 2627.0 2567.68
2021-01-05 11:00:00+05:30 2627.6 2642.0 2626.55 2635.85 2567.68
2021-01-05 11:15:00+05:30 2635.85 2644.0 2633.2 2638.85 2567.68
2021-01-05 11:30:00+05:30 2638.85 2640.05 2633.0 2639.85 2567.68
2021-01-05 11:45:00+05:30 2639.9 2640.0 2633.0 2636.65 2567.68
2021-01-05 12:00:00+05:30 2636.05 2639.95 2633.0 2638.95 2567.68
2021-01-05 12:15:00+05:30 2639.15 2642.0 2635.2 2637.0 2567.68
2021-01-05 12:30:00+05:30 2637.2 2649.0 2636.8 2644.5 2567.68
2021-01-05 12:45:00+05:30 2644.8 2650.0 2644.45 2647.9 2567.68
2021-01-05 13:00:00+05:30 2647.35 2650.0 2644.0 2644.65 2567.68
2021-01-05 13:15:00+05:30 2644.65 2645.0 2628.55 2634.45 2567.68
2021-01-05 13:30:00+05:30 2634.5 2643.5 2631.0 2641.0 2567.68
2021-01-05 13:45:00+05:30 2641.05 2641.4 2633.0 2634.7 2567.68
2021-01-05 14:00:00+05:30 2634.8 2638.9 2632.0 2632.0 2567.68
2021-01-05 14:15:00+05:30 2632.0 2638.0 2630.0 2635.95 2567.68
2021-01-05 14:30:00+05:30 2635.95 2642.0 2633.2 2639.95 2567.68
2021-01-05 14:45:00+05:30 2639.85 2642.0 2637.25 2639.4 2567.68
2021-01-05 15:00:00+05:30 2639.25 2658.0 2638.35 2656.9 2567.68
2021-01-05 15:15:00+05:30 2656.15 2659.0 2646.95 2654.95 2567.68
2021-01-06 09:15:00+05:30 2660.1 2662.1 2638.5 2639.0 -----Day3
2021-01-06 09:30:00+05:30 2639.0 2648.8 2635.2 2646.05
我是新来的。
非常感谢您的帮助:)如果可能的话,将
df1
中DatetimeIndex的第一个值与df中当天的第一个原始值进行匹配。索引可以聚合,创建平均值(与总和除以3
相同),为第二天移位,并用前向填充缺失值分配回新列:
df1 = df.resample('1D', # on='col name' if the date column is not an index
origin='start').agg({'Open':'first',
'Close':'last',
'Low':'min',
'High':'max'})
s = df1[['High','Low','Close']].mean(axis=1).shift()
df['new'] = s
df['new'] = df['new'].ffill()
另一种方法是根据DatetimeIndex
分组,不使用时间,并使用新列:
谢谢你,耶斯雷尔用不同的方式向我展示了它,它也很完美。
df1 = df.resample('1D', # on='col name' if the date column is not an index
origin='start').agg({'Open':'first',
'Close':'last',
'Low':'min',
'High':'max'})
s = df1[['High','Low','Close']].mean(axis=1).shift()
df['new'] = s
df['new'] = df['new'].ffill()
df1 = df.groupby(df.index.normalize()).agg({'Open':'first',
'Close':'last',
'Low':'min',
'High':'max'})
s = df1[['High','Low','Close']].mean(axis=1).shift()
df['new'] = df.index.normalize().map(s)