使用 Pandas 重采样函数的多个脚本的 OHLC
OHLC of Multiple Scrips Using Pandas Resample function
我有 2 个股票的报价数据(scrip_names 是 abc 和 xyz)。由于报价数据处于“秒”级别,我想将其转换为 1 分钟级别的 OHLC(开盘价、最高价、最低价、收盘价)。
当报价数据仅包含 1 个股票时,我使用以下代码(单次 OHLC Scrip.py)获得 1 分钟级别的 OHLC。此代码给出了所需的结果。
代码:
import os
import time
import datetime
import pandas as pd
import numpy as np
ticks=pd.read_csv(r'C:\Users\tech\Downloads\ticks.csv')
ticks=pd.DataFrame(ticks)
#ticks=ticks.where(ticks['scrip_name']=="abc")
#ticks=ticks.where(ticks['scrip_name']=="xyz")
ticks['timestamp'] = pd.to_datetime(ticks['timestamp'])
ticks=ticks.set_index(['timestamp'])
ohlc_prep=ticks.loc[:,['last_price']]
ohlc_1_min=ohlc_prep['last_price'].resample('1min').ohlc().dropna()
ohlc_1_min.to_csv(r'C:\Users\tech\Downloads\ohlc_1_min.csv')
结果:
但是,当报价数据包含超过 1 个股票时,此代码不起作用。应该对代码进行哪些修改才能获得按 scrip_name.
分组的以下结果(文件名:expected_result.csv)
预期结果:
这里是 link 报价数据,python 单个脚本的代码,单个脚本的结果,以及多个脚本的期望结果:https://drive.google.com/file/d/1Y3jngm94hqAW_IJm-FAsl3SArVhnjGJE/view?usp=sharing
非常感谢任何帮助。
谢谢。
我认为你需要groupby
喜欢:
ticks['timestamp'] = pd.to_datetime(ticks['timestamp'])
ticks=ticks.set_index(['timestamp'])
ohlc_1_min=ticks.groupby('scrip_name')['last_price'].resample('1min').ohlc().dropna()
或者:
ohlc_1_min=(ticks.groupby(['scrip_name',
pd.Grouper(freq='1min', level='timestamp')])['last_price']
.ohlc()
.dropna())
我有 2 个股票的报价数据(scrip_names 是 abc 和 xyz)。由于报价数据处于“秒”级别,我想将其转换为 1 分钟级别的 OHLC(开盘价、最高价、最低价、收盘价)。
当报价数据仅包含 1 个股票时,我使用以下代码(单次 OHLC Scrip.py)获得 1 分钟级别的 OHLC。此代码给出了所需的结果。
代码:
import os
import time
import datetime
import pandas as pd
import numpy as np
ticks=pd.read_csv(r'C:\Users\tech\Downloads\ticks.csv')
ticks=pd.DataFrame(ticks)
#ticks=ticks.where(ticks['scrip_name']=="abc")
#ticks=ticks.where(ticks['scrip_name']=="xyz")
ticks['timestamp'] = pd.to_datetime(ticks['timestamp'])
ticks=ticks.set_index(['timestamp'])
ohlc_prep=ticks.loc[:,['last_price']]
ohlc_1_min=ohlc_prep['last_price'].resample('1min').ohlc().dropna()
ohlc_1_min.to_csv(r'C:\Users\tech\Downloads\ohlc_1_min.csv')
结果:
但是,当报价数据包含超过 1 个股票时,此代码不起作用。应该对代码进行哪些修改才能获得按 scrip_name.
分组的以下结果(文件名:expected_result.csv)预期结果:
这里是 link 报价数据,python 单个脚本的代码,单个脚本的结果,以及多个脚本的期望结果:https://drive.google.com/file/d/1Y3jngm94hqAW_IJm-FAsl3SArVhnjGJE/view?usp=sharing
非常感谢任何帮助。
谢谢。
我认为你需要groupby
喜欢:
ticks['timestamp'] = pd.to_datetime(ticks['timestamp'])
ticks=ticks.set_index(['timestamp'])
ohlc_1_min=ticks.groupby('scrip_name')['last_price'].resample('1min').ohlc().dropna()
或者:
ohlc_1_min=(ticks.groupby(['scrip_name',
pd.Grouper(freq='1min', level='timestamp')])['last_price']
.ohlc()
.dropna())