我正在處理一些股票的歷史資料。我想按特定時間間隔(如 1 小時、3 天等)對資料進行分組。Pandas 提供了驚人的功能,使用resampling. 但它發生在top-to-bottom(下圖)。像 -
With interval = 5m
Group 1 => 9:30 - 9:35
Group 2 => 9:35 - 9:40
Group 3 => 9:40 - 9:45

在這里,我想從 分組bottom-to-top,例如 -
With interval = 5m
Group 1 => 9:45 - 9:40
Group 2 => 9:40 - 9:35
Group 3 => 9:35 - 9:30
如何通過熊貓重采樣來做到這一點?如果還有其他方法,請同時提及。謝謝 :)
編輯:我想從上面的影像資料中得到類似的東西 -
5-min groups open max_high max_low close sum_volume
2022-05-05 09:45:00-04:00 162.750000 162.750000 162.529999 162.540100 338003
2022-05-05 09:40:00-04:00 163.000000 163.440002 163.000000 163.220001 419992
2022-05-05 09:35:00-04:00 163.500000 163.535004 163.500000 163.535004 366042
2022-05-05 09:30:00-04:00 163.850006 163.989899 163.509995 163.649994 2720494
uj5u.com熱心網友回復:
也許您可以iloc在重新采樣后使用反轉?我不確定這是否會阻礙您的進一步計算,但它可以重新采樣和反轉集合。
由于我無權訪問您的確切樣本資料
這是我測驗它的方式:
import yfinance as yf
import pandas as pd
import numpy as np
df = yf.download(tickers = 'BTC-USD',
start = '2022-05-16',
end = '2022-05-17',
interval = '1m',
group_by = 'ticker',
auto_adjust = True).reset_index()
df_1min = df.iloc[110:130,:] #sample timeframe extracted
df_1min.head()
這導致 1 分鐘 df:

然后,您可以申請resample和iloc:
conversion = {'Open' : 'first',
'High' : 'max',
'Low' : 'min',
'Close' : 'last',
'Volume' : 'sum'}
df_1min = df_1min.set_index('Datetime')
df_5min = df_1min.resample('5T').agg(conversion)
df_5min.iloc[::-1].reset_index() #reverse
這導致反向df:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/477072.html
