2017-06-02 24 views
0
f = pd.read_sql_query('SELECT * FROM mydata', engine, index_col='Date') 

f['SMA_100'] = talib.SMA(numpy.asarray(f['Settle']), 100) 
f['SMA_200'] = talib.SMA(numpy.asarray(f['Settle']), 200) 

print(f['SMA_100']) 

2017-05-17 2333.4155 
2017-05-18 2334.4630 
2017-05-19 2335.6780 
Name: SMA_100, dtype: float64 

print(f['SMA_200']) 

2017-05-17 2251.68320 
2017-05-18 2252.73695 
2017-05-19 2253.85945 
Name: SMA_200, dtype: float64 

xとy変数の2番目の列の値をキャッチして比較する方法を教えてください。例:パンダ列比較

if x > y: 
    do something 

ここで、xとyは2番目の列の値です。私は試しました:

if f['SMA_100'] > f['SMA_200']: 
    do something 

もちろん、動作しません。

+0

「何か」とは何でしょうか?条件を満たす値で操作しますか? – MSeifert

+0

あなたの完全なスクリプトを投稿してください。 'pd'とは何ですか(私はそのパンダと見なします)?タリブとは何ですか? – heltonbiker

+0

これはあなたの代わりに他のユーザーが使用できないことをデータベースに呼び出しを行うと 'からのロジックとの例を乱雑のサンプルデータでMCVE https://stackoverflow.com/help/mcveを投稿する必要があり、パンダの列を比較するに関係していますタリブ ' – mgilbert

答えて

1

@ MSeifertが尋ねたとおり、「何か」が何を意味するかは本当に依存します。決済価格はあなた は、私が想定し 何の移動平均を見て、いくつかのトレードロジックを作成するために探していると仮定すると、あなたは、いくつかのパスに依存するロジックを必要とする代わりにあれば、あなたを介して見ることができる

import pandas as pd 

df = pd.DataFrame({'A':[5, 2, 7],'B':[8,1,3]}, index=['t1', 't2', 't3']) 

idx = df.loc[:, 'A'] > df.loc[:, 'B'] 
df.loc[:,'Trade'] = idx * 10 

print(df) 
    A B Trade 
t1 5 8  0 
t2 2 1  10 
t3 7 3  10 

ような何かを行うことができます ブール値のidx、たとえば

for time, istrue in idx.iteritems(): 
    if istrue: 
     print("Doing something at %s" % time) 

Doing something at t2 
Doing something at t3 

あなたは

if f['SMA_100'] > f['SMA_200']: 
    pass 

の際にエラーが発生した理由は、これが

print(idx) 
t1 False 
t2  True 
t3  True 
dtype: bool 

がTrueであるかどうかを尋ねている

if idx: 
    pass 

のようなものに解決されることですまたは虚偽? ValueErrorが示すように、 The truth value of a Series is ambiguous.