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变量中第二列中的值并进行比较。例如:
if x > y:
do something
其中x和y是第二列的值。我试过了:
if f['SMA_100'] > f['SMA_200']:
do something
但当然没有用。
答案 0 :(得分: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
这是解决了类似
的问题if idx:
pass
询问是否
print(idx)
t1 False
t2 True
t3 True
dtype: bool
是对还是错?正如ValueError
所示,
The truth value of a Series is ambiguous.