我有一个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
答案 0 :(得分:1)
我不确定我是否完全理解,除非你提供你正在寻找的价值,但也许这就是它?
df['ES_Inverse_price'] = df['Close_x'].shift(1) - df['ES_difference']
播放一些非常粗略的数据(我无法复制你的数据):
df
close_p ticker
0 100.0 aapl
1 102.0 aapl
2 103.4 aapl
3 101.2 aapl
4 106.2 apple
df['es_difference'] = df['close_p'].diff()
close_p ticker es_difference
0 100.0 aapl NaN
1 102.0 aapl 2.0
2 103.4 aapl 1.4
3 101.2 aapl -2.2
4 106.2 apple 5.0
df['es_inverse_price'] = df['close_p']-df['es_difference'].cumsum() - df['es_difference'].cumsum()
close_p ticker es_difference es_inverse_price
0 100.0 aapl NaN NaN
1 102.0 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
我不会考虑将iloc[0,0]
的所有内容都设置为“安全”,但我不确定如何做到这一点。确保你事先进行分类。