2017-05-27 14 views
-1

を違いを追加します - ES_Inverse_price差列を取り、からそれを減算し、私は新しい列を作成しようとしているパンダ時系列 - 私はデータフレーム、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 

Close_xコラム:

Df['ES_difference'] = Df['Close_x'].diff() 

だから、私はES_difference列を作った方法です。今、私は新しい列ES_Inverse_priceClose_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列の新しい値を取得したいと考えています。

は残念ながら、私はそれで​​でコードを参照する次のエラーを取得する:

TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('S32') dtype('S32') dtype('S32') 

は、編集:代わり2128.75であることの行1を取るたとえば、それは2127.25でしょう。私は 'Close_x'(既に確立された値)から前の行の値を差し引いて差し引いて(2128.75を与える)差を差し引いています。

編集:私は完全には理解していないと確信している

\t close_p \t ticker \t difference \t ES_Inverse Price 
 
0 \t 100 \t aapl \t NaN \t NaN 
 
1 \t 102 \t aapl \t 2.0 \t 98.0 
 
2 \t 103.4 \t aapl \t 1.4 \t 96.6 
 
3 \t 101.2 \t aapl \t -2.2 \t 98.8 
 
4 \t 106.2 \t aapl \t 5.0 \t 93.8

答えて

1

だから下の別のポスターによって与えられた例では、ここで私が探しているはずだ何

あなたが探している値を提供しない限り、多分これはそれですか?

df['ES_Inverse_price'] = df['Close_x'].shift(1) - df['ES_difference'] 

(私はトラブルあなたのコピーを持っていた)いくつかの非常にラフデータと遊ぶ:私は「安全」であることをiloc[0,0]オフにすべてを基づか考えていない

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 

を私は本当にわからないんだけどどのようにそれを行うには。あらかじめソートしていることを確認してください。

+0

私はあなたのケースで 'Close_p'の違いを差し引いていません。むしろ、私は差分を "ES_Inverse_price"カラムに貼り付けようとしています。差分カラムが減算されているので、 "ES_Inverse_price"カラムは着実に "Close_p"(または "Close_x")カラム。だから私はあなたがシフト(1)コードで "Close_p"を取っているときに、私が探しているものとは違う結果を得ようとしていると思います。私はそこに差の列を持って、私はちょうど新しい 'ES_Inverse_price'列の前の値から差し引いて新しい行の値に到達させたい。 –

+0

編集:コメントありがとう、私は元の投稿の下部に私が探しているものの例を追加しました。 –

+0

これで、close_xからes_difference(シフトダウン)を差し引いていますか?編集 –

関連する問題