【发布时间】:2017-10-28 13:32:06
【问题描述】:
我有一个 DataFrame,DF:
Ticker_x Date Close_x ES_difference
0 ES H7 10/18/2016 13:44 2128
1 ES H7 10/18/2016 13:59 2128.75 0.75
2 ES H7 10/18/2016 14:14 2125.75 -3
3 ES H7 10/18/2016 14:29 2126.5 0.75
4 ES H7 10/18/2016 14:44 2126.5 0
5 ES H7 10/18/2016 16:14 2126 -0.5
6 ES H7 10/18/2016 16:44 2126.25 0.25
7 ES H7 10/18/2016 17:59 2126.5 0.25
8 ES H7 10/18/2016 18:14 2127 0.5
9 ES H7 10/18/2016 19:14 2127.75 0.75
10 ES H7 10/18/2016 19:44 2127.75 0
11 ES H7 10/18/2016 19:59 2127.75 0
12 ES H7 10/18/2016 20:44 2129 1.25
13 ES H7 10/18/2016 21:29 2128.75 -0.25
14 ES H7 10/18/2016 21:44 2129 0.25
15 ES H7 10/18/2016 22:14 2129.5 0.5
16 ES H7 10/18/2016 22:44 2129.5 0
我正在尝试创建一个新列 - ES_Inverse_price,它采用差异列并从 Close_x 列中减去它:
Df['ES_difference'] = Df['Close_x'].diff()
这就是我制作ES_difference 专栏的方式。现在我想要一个新列 ES_Inverse_price 从 Close_x 中获取先前的值并减去同一行的差异列值:
Df['ES_Inverse_price'] = ''
Df['ES_Inverse_price'][0] = Df['Close_x'][0]
Df['ES_Inverse_price'][1:] = Df['ES_Inverse_price'].shift(1)-Df['ES_difference']
...所以ES_Inverse_price 中的第一行将等于Close_x 中的第一行。这很好,但现在我想开始减去那个差异列,以获得我正在尝试创建的 ES_Inverse_price 列的新值。
不幸的是,我收到以下错误,指的是其中包含 shift(1) 的代码:
TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32')
编辑:例如取第 1 行。不是 2128.75,而是 2127.25。我从前一行的值中减去“Close_x”(已经是一个既定值)的差值,而不是加上它(这将给我 2128.75)。
编辑:
因此,在下面另一张海报给出的示例中,这就是我要寻找的内容:
close_p ticker difference ES_Inverse Price
0 100 aapl NaN NaN
1 102 aapl 2.0 98.0
2 103.4 aapl 1.4 96.6
3 101.2 aapl -2.2 98.8
4 106.2 aapl 5.0 93.8
【问题讨论】:
标签: python pandas dataframe time series