Python 数据帧分组
希望从9:00:00开始获取/分组Python 数据帧分组,python,pandas,Python,Pandas,希望从9:00:00开始获取/分组2H数据 对于1H数据,我尝试了: data= open high low close volume timestamp 2015-02-02 09:15:00+05:30 1280.00 1286.00 1280.00 1284.55 584
2H
数据
对于1H
数据,我尝试了:
data=
open high low close volume
timestamp
2015-02-02 09:15:00+05:30 1280.00 1286.00 1280.00 1284.55 5847
2015-02-02 09:16:00+05:30 1284.55 1290.00 1283.90 1284.05 260
2015-02-02 09:17:00+05:30 1284.05 1288.20 1280.30 1283.90 424
2015-02-02 09:18:00+05:30 1283.90 1285.75 1283.90 1285.35 40
2015-02-02 09:19:00+05:30 1285.35 1290.00 1283.30 1285.40 203
2015-02-02 09:20:00+05:30 1285.35 1286.00 1283.50 1284.65 267
结果如下:
data.groupby(pd.Grouper(freq='1h')).agg({"open":"first","close":"last","low":"min","high":"max","volume":"sum"})
如何删除NaN
行
对于2H
,代替1H
,结果:
open close low high volume
timestamp
2015-02-02 09:00:00+05:30 1280.00 1285.65 1280.00 1290.00 12620
2015-02-02 10:00:00+05:30 1285.65 1281.00 1281.00 1294.00 5103
2015-02-02 11:00:00+05:30 1281.00 1261.55 1261.20 1284.40 8995
2015-02-02 12:00:00+05:30 1261.30 1266.00 1256.00 1267.00 12772
2015-02-02 13:00:00+05:30 1266.00 1263.85 1260.00 1266.85 4076
2015-02-02 14:00:00+05:30 1261.35 1264.60 1260.00 1268.00 5937
2015-02-02 15:00:00+05:30 1263.00 1262.00 1256.65 1265.00 9505
2015-02-02 16:00:00+05:30 NaN NaN NaN NaN 0
2015-02-02 17:00:00+05:30 NaN NaN NaN NaN 0
两个问题:一,<代码>NaN交易时间以外的行。2.希望从早上9点开始
我认为这会起作用,但不确定:
open close low high volume
timestamp
2015-02-02 08:00:00+05:30 1280.00 1285.65 1280.00 1290.0 12620
2015-02-02 10:00:00+05:30 1285.65 1261.55 1261.20 1294.0 14098
2015-02-02 12:00:00+05:30 1261.30 1263.85 1256.00 1267.0 16848
2015-02-02 14:00:00+05:30 1261.35 1262.00 1256.65 1268.0 15442
2015-02-02 16:00:00+05:30 NaN NaN NaN NaN 0
2015-02-02 18:00:00+05:30 NaN NaN NaN NaN 0
如果我尝试一个
7分钟
或7小时
时间段(只是为了概括),偏移量将无法正常工作,因为60分钟
不能被7整除。。。它将在2分钟
,3分钟
,4分钟
,5分钟
,6分钟
等时间内工作。。。关于如何概括的任何帮助?Grouper和重采样输出是相同的,但如果添加origin=“2015-02-09 09:00:00”
,则输出将来自指定的日期和时间。
我正在从雅虎财经获取我的苹果数据。我正在删除获取数据的时区。开始时间是9:30,因此origin=
设置为9:30
data.groupby(pd.Grouper(freq='2h', offset='1h')).agg({"open":"first","close":"last","low":"min","high":"max","volume":"sum"})
您是否考虑使用<代码> DROPNA < /代码>来删除具有<代码> NANS < /代码>的行?关于你的第二个问题,使用
offset='1h'
对我很有效。@gofvonx,是的,这很有效。但是,如果我尝试7分钟或7小时的时间范围(只是为了概括)偏移量将无法正常工作,因为60分钟不能被7整除。。。它将工作2分钟、3分钟、4分钟、5分钟、6分钟等。。。
import yfinance as yf
import pandas as pd
df = yf.download("AAPL", interval='1m', start="2021-03-01", end="2021-03-08")
df.index = pd.to_datetime(df.index)
df.index = df.index.tz_localize(None)
df_2h_origin = df.resample('2h', origin='2021-03-01 09:30:00').agg({"Open":"first","Close":"last","Low":"min","High":"max","Volume":"sum"})
df_2h_origin.dropna(how='any', axis=0, inplace=True)
df_2h_origin.head()
Open Close Low High Volume
Datetime
2021-03-01 09:30:00 123.500000 125.879898 122.790001 126.154999 46633988
2021-03-01 11:30:00 125.879997 126.209297 125.669998 126.620003 21994558
2021-03-01 13:30:00 126.205002 127.559998 126.089996 127.750000 24004585
2021-03-01 15:30:00 127.565002 127.790001 127.269997 127.930000 11684669
2021-03-02 09:30:00 128.410004 125.959999 125.500000 128.720001 41931239