2016-11-24 15 views
0

パンダで簡単に質問できます。 は、私は次の値python - pandas - boolean comparison - 列の各値を整数と比較する方法?

timestamp    value         
2000-01-03 00:00:00  25 
2000-01-03 00:30:00  -10 
2000-01-03 01:00:00  100 
2000-01-03 01:30:00  -690 
2000-01-03 02:00:00  650 
2000-01-03 02:30:00  320 
2000-01-03 03:00:00  150 
2000-01-03 03:30:00  160 

を格納パンダのデータフレームを持っていると私は> 0他の場所= 1であれば値が移入されるだろう列-1

timestamp    value a         
2000-01-03 00:00:00  25 1 
2000-01-03 00:30:00  -10 -1 
2000-01-03 01:00:00  100 1 
2000-01-03 01:30:00  -690 -1 
2000-01-03 02:00:00  650 1 
2000-01-03 02:30:00  320 1 
2000-01-03 03:00:00  150 1 
2000-01-03 03:30:00  160 1 

ですを追加したいとそれを行うための単純なパンダの構文がありますか? 私はコードより多くを混乱させるようなポストフィニッシュではありませんでした。

ありがとう! は(私はそのことについて申し訳ありませんが、それをより明確にするために、質問を変えています。)

+1

あなたが書くことが意味しました ' if(price-entry_price) '?あなたがすでに 'exit_price'でループしているからです。 –

+0

あなたの目標は100%ではありませんが、問題は' trend_value = 1 if(exit_price-entry_price)> 0 else -1'です。 'exit_price-entry_price'はシリーズであり、整数と比較することはできません。私はブーリアンマスキングを使用するより良い方法があると思う。希望の出力は何ですか? – 3novak

+0

ええ、問題は 'data [i:i + tradebars] .close'は値ではなく系列を返すということです。 –

答えて

0

このコードは動作するはずです:

list(trend.map(lambda x: 1 if x is True else -1)) 

は、あなただけのlist()を削除し、リストを必要としない場合。それから、系列を返します。

あなたはtradeで作業する場合:

trade.trend.map(lambda x: 1 if x is True else -1) 

は、同じ仕事をするでしょう。

1

使用np.sign()方法:

In [22]: df['a'] = np.sign(df.value) 

In [23]: df 
Out[23]: 
      timestamp value a 
0 2000-01-03 00:00:00  25 1 
1 2000-01-03 00:30:00 -10 -1 
2 2000-01-03 01:00:00 100 1 
3 2000-01-03 01:30:00 -690 -1 
4 2000-01-03 02:00:00 650 1 
5 2000-01-03 02:30:00 320 1 
6 2000-01-03 03:00:00 150 1 
7 2000-01-03 03:30:00 160 1 
8 2000-01-03 04:00:00  0 0 # <----- 

注:np.sign - あなたがゼロ値のため-1を持つようにしたい場合は、0ため0値を返します - 使用np.where()

In [24]: df['a2'] = np.where(df.value > 0, 1, -1) 

In [25]: df 
Out[25]: 
      timestamp value a a2 
0 2000-01-03 00:00:00  25 1 1 
1 2000-01-03 00:30:00 -10 -1 -1 
2 2000-01-03 01:00:00 100 1 1 
3 2000-01-03 01:30:00 -690 -1 -1 
4 2000-01-03 02:00:00 650 1 1 
5 2000-01-03 02:30:00 320 1 1 
6 2000-01-03 03:00:00 150 1 1 
7 2000-01-03 03:30:00 160 1 1 
8 2000-01-03 04:00:00  0 0 -1 # <---- 
+0

完璧、ありがとう! –

+0

@jimbasquiat、あなたも大歓迎です:) – MaxU

関連する問題