我有一个 1 分钟柱 OHLC 价格 CSV 文件,我正在尝试将其重新采样为 15 分钟柱。我正在使用的代码来自此链接,如下所示:
ohlc_dict = {'open':'first', 'high':'max', 'low':'min', 'close': 'last'}
price15m = df.resample('15Min', how=ohlc_dict, closed='right').dropna(how='any')
Run Code Online (Sandbox Code Playgroud)
我收到了预期的重新采样数据帧,但也出现了此警告:
FutureWarning: how in .resample() is deprecated
the new syntax is .resample(...)..apply(<func>)
ohlc_dict = {'open':'first', 'high':'max', 'low':'min', 'close': 'last'}
Run Code Online (Sandbox Code Playgroud)
建议使用此语法,但我不确定如何:
the new syntax is .resample(...)..apply(<func>)
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?非常感谢!
据我了解,滚动允许您指定用于计算滚动平均值的窗口类型。该文档列出了此处提供的各种窗口类型选项。但是,我尝试使用长度为 4 的对称加权窗口类型,其定义如下(并且不可作为内置使用):
(a + 2*b + 2*c + d)/6
Run Code Online (Sandbox Code Playgroud)
其中 a、b、c 和 d 是任意给定时间滚动窗口的四个元素,[1/6, 2/6, 2/6, 1/6] 是相关的权重。
如果我使用默认的窗口类型(boxcar),我会得到以下结果:
import pandas as pd
rs = pd.Series(range(10))
print rs.rolling(4, win_type = 'boxcar').mean()
0 NaN
1 NaN
2 NaN
3 1.5
4 2.5
5 3.5
6 4.5
7 5.5
8 6.5
9 7.5
dtype: float64
Run Code Online (Sandbox Code Playgroud)
知道如何使用自定义的滚动窗口类型(在本例中为对称加权移动平均线)吗?
我有一个字符串列表(unicode).像这样:
>>> tstamp
[u'2017-08-08T08:51:20.465Z', u'2017-08-08T08:51:27.871Z', u'2017-08-08T08:51:33.399Z', u'2017-08-08T08:51:37.530Z', u'2017-08-08T08:51:47.248Z', u'2017-08-08T08:51:50.414Z', u'2017-08-08T08:51:54.707Z', u'2017-08-08T08:51:54.781Z']
Run Code Online (Sandbox Code Playgroud)
我想将此字符串列表转换为日期时间对象列表.像这样:
>>> dtstamp
[datetime.datetime(2017, 8, 8, 8, 51, 20, 465000), datetime.datetime(2017, 8, 8, 8, 51, 27, 871000), datetime.datetime(2017, 8, 8, 8, 51, 33, 399000), datetime.datetime(2017, 8, 8, 8, 51, 37, 530000), datetime.datetime(2017, 8, 8, 8, 51, 47, 248000), datetime.datetime(2017, 8, 8, 8, 51, 50, 414000), datetime.datetime(2017, 8, 8, 8, 51, 54, 707000), datetime.datetime(2017, 8, 8, 8, 51, 54, 781000)]
Run Code Online (Sandbox Code Playgroud)
我的解决方案非常粗糙,我希望在不使用任何循环的情况下进行此转换.转换速度至关重要.到目前为止,这是我的代码:
dtstamp = [0]*len(tstamp)
for i in range(0,len(tstamp)):
dtstamp[i] = …Run Code Online (Sandbox Code Playgroud)