【发布时间】:2018-07-25 01:05:16
【问题描述】:
我需要找到过去 5 天的移动平均高度 (abs(Close-Open))。我有每日 OHLC 数据。一个简单的解决方案是首先创建一个高度列,然后使用滚动函数计算 5 天移动平均值。但这使我的代码效率低下。我需要在不创建新列的情况下找到移动平均高度。
我的数据如下所示,预期输出在“平均高度”列中:
Date Open High Low Close Average Height
01-01-2018 1763.95 1763.95 1725 1731.35
02-01-2018 1736.2 1745.8 1725 1743.2
03-01-2018 1741.1 1780 1740.1 1774.6
04-01-2018 1779.95 1808 1770 1801.35
05-01-2018 1801.1 1820.4 1795.6 1809.95 20.67
08-01-2018 1816 1827.95 1800 1825 15.95
09-01-2018 1823 1835 1793.9 1812.05 16.74
10-01-2018 1812.05 1823 1801.4 1816.55 10.94
11-01-2018 1825 1825.05 1798.55 1802.1 11.24
12-01-2018 1805 1820 1794 1804.95 9.48
15-01-2018 1809.9 1834.45 1792.45 1830 11.7
16-01-2018 1835 1857.45 1826.1 1850.25 12.56
17-01-2018 1850 1852.45 1826.2 1840.5 13.56
18-01-2018 1840.5 1852 1823.5 1839 9.28
19-01-2018 1828.25 1836.35 1811 1829.5 9.52
我当前使用的代码如下 sn-p:
df['Avg Height'] = df[abs(df['Close'] - df['Open'])].rolling(window = 5).mean()
当然,它看起来不正确,因为我遇到了错误。
【问题讨论】:
-
试试:
df['Avg Height'] = abs(df['Close'] - df['Open']).rolling(window = 5).mean()- 你在abs(...)周围有一个错误的df[ .. ] -
@pault - 谢谢。这对我来说非常好,这正是我想要的。
标签: python python-3.x pandas dataframe