使用 Pandas 重采样功能的多个脚本的 OHLC
Posted
技术标签:
【中文标题】使用 Pandas 重采样功能的多个脚本的 OHLC【英文标题】:OHLC of Multiple Scrips Using Pandas Resample function 【发布时间】:2021-11-28 09:44:11 【问题描述】:我有 2 个便笺的刻度数据(scrip_names 是 abc 和 xyz)。由于分时数据处于“秒”级别,我想将其转换为 OHLC(开盘价、最高价、最低价、收盘价)的 1 分钟级别。
当分时数据仅包含 1 个脚本时,我使用以下代码(Single Scrip.py 的 OHLC)来获取 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)。
预期结果:
这里是报价数据、单个脚本的python代码、单个脚本的结果和多个脚本的期望结果的链接:https://drive.google.com/file/d/1Y3jngm94hqAW_IJm-FAsl3SArVhnjGJE/view?usp=sharing
非常感谢任何帮助。
谢谢。
【问题讨论】:
【参考方案1】:我认为你需要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())
【讨论】:
这行得通。非常感谢你:)以上是关于使用 Pandas 重采样功能的多个脚本的 OHLC的主要内容,如果未能解决你的问题,请参考以下文章