【发布时间】:2015-05-20 15:44:36
【问题描述】:
我有一个 DataFrame conditions,其中包含一组条件,这些条件类似于表达式:
indicator logic value
Discount 'ADR Premium' '<' -0.5
Premium 'ADR Premium' '>' 0.5
现在我有一个带有一组值的数据框indicators,在这种情况下只有一个指标ADR Premium:
ADR Premium
2015-04-20 15:30:00-04:00 -0.102270
2015-04-21 15:30:00-04:00 0.235315
2015-04-22 15:30:00-04:00 -0.323919
2015-04-23 15:30:00-04:00 0.546363
2015-04-24 15:30:00-04:00 -0.714143
2015-04-27 15:30:00-04:00 -0.153165
2015-04-28 15:30:00-04:00 0.878494
2015-04-29 15:30:00-04:00 0.993079
2015-04-30 15:30:00-04:00 -0.824815
2015-05-04 15:30:00-04:00 1.644784
2015-05-05 15:30:00-04:00 -0.254343
2015-05-06 15:30:00-04:00 -0.268981
2015-05-07 15:30:00-04:00 0.591411
2015-05-08 15:30:00-04:00 -0.588047
2015-05-11 15:30:00-04:00 -0.458143
2015-05-12 15:30:00-04:00 0.063643
2015-05-13 15:30:00-04:00 -0.051659
2015-05-14 15:30:00-04:00 1.474963
2015-05-15 15:30:00-04:00 -0.172429
2015-05-18 15:30:00-04:00 0.035558
我希望实现的是将conditions 的逻辑应用于indicators,以便生成一个名为signals 的新数据框。为了让您了解我在寻找什么,请参见下文。这只查看conditions 中的第一个条件和indicator 中的第五个值(因为它的计算结果为True):
signals_list = []
conditions_index = 0
indicators_index = 4
if eval( str(indicators[conditions.ix[conditions_index].indicator][indicators_index]) + conditions.ix[conditions_index].log
ic + str(conditions.ix[conditions_index].value) ):
signal = {'Time': indicators.ix[indicators_index].name,
'Signal': conditions.ix[conditions_index].name}
signals_list.append(signal)
signals = pd.DataFrame(signals_list)
signals.index = signals.Time
signals.drop('Time', 1)
这给我留下了signals:
Signal
Time
2015-04-24 15:30:00-04:00 'Discount'
我想以最有效的 Pandas-ic 方法针对适用指标的所有条件执行此操作。期待想法。
【问题讨论】:
标签: python pandas expression signal-processing