小编Tan*_*may的帖子

Pandas 重新采样 FutureWarning

我有一个 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)

有人能指出我正确的方向吗?非常感谢!

python apply pandas

4
推荐指数
1
解决办法
2109
查看次数

为 pandas 滚动平均值制作自定义窗口类型

据我了解,滚动允许您指定用于计算滚动平均值的窗口类型。该文档列出了此处提供的各种窗口类型选项。但是,我尝试使用长度为 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)

知道如何使用自定义的滚动窗口类型(在本例中为对称加权移动平均线)吗?

python mean moving-average pandas

3
推荐指数
1
解决办法
3021
查看次数

在字符串列表上使用strptime().不能使用循环

我有一个字符串列表(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)

python datetime strptime typeerror

0
推荐指数
1
解决办法
776
查看次数

标签 统计

python ×3

pandas ×2

apply ×1

datetime ×1

mean ×1

moving-average ×1

strptime ×1

typeerror ×1