Python - 数据帧条件索引值选择

时间:2016-04-01 19:15:19

标签: python numpy pandas dataframe

我有一个类似于下面的数据框:

                       close_price  short_lower_band  long_lower_band
Equity(8554)               180.530        184.235603       183.964306
Equity(2174)               166.830        157.450404       157.160282
Equity(23921)              124.670        127.243468       126.072039
Equity(26807)              117.910        108.761587       107.190081
Equity(42950)              108.070         97.491851        96.868036
Equity(4151)                97.380         98.954371        98.335786

我想生成一个索引值列表,其中'关闭价格'小于' short_lower_band'并且小于' long_lower_band'。因此,从上面的示例数据框中我们得到:

long_secs = [Equity(8554), Equity(23921), Equity(4151)]

任何有关如何做到这一点的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

试试这个:

In [334]: df
Out[334]:
               close_price  short_lower_band  long_lower_band
Equity(8554)        180.53        184.235603       183.964306
Equity(2174)        166.83        157.450404       157.160282
Equity(23921)       124.67        127.243468       126.072039
Equity(26807)       117.91        108.761587       107.190081
Equity(42950)       108.07         97.491851        96.868036
Equity(4151)         97.38         98.954371        98.335786

In [335]:

In [335]: df[(df.close_price < df.short_lower_band) & \
   .....:    (df.close_price < df.long_lower_band)].index.values
Out[335]: array(['Equity(8554)', 'Equity(23921)', 'Equity(4151)'], dtype=object)

或者如果你需要一个普通的列表而不是numpy数组:

In [336]: df[(df.close_price < df.short_lower_band) & \
   .....:    (df.close_price < df.long_lower_band)].index.tolist()
Out[336]: ['Equity(8554)', 'Equity(23921)', 'Equity(4151)']