动态搜索与列表中条件匹配的值

时间:2018-07-05 14:39:09

标签: python pandas

我有一个看起来像这样的数据: enter image description here

我想要一个python函数,以非连续方式搜索值小于-1或大于1的日期。换句话说,

它应该导致 1993年3月17日(日期小于-1的日期), 1993年3月24日(值大于+1的日期) 1993年3月25日(值小于-1的日期) 1993年3月29日(值大于+1的日期) 1993年4月1日(值大于+1的日期)。

它应该跳过例如3/18/1993,因为即使它的值(-1.3)小于-1,我们已经遇到过3/17/1993值小于-1。

非常感谢您!

1 个答案:

答案 0 :(得分:2)

data = dict( a= 0.2, b= 0.3, c= -1.5, d= -1.3, e= 0.3, f= 0.2, g= 12, h= -1.2, i= -1.3, j= 1.4, k= 0.3)
neg = True
for (k,v) in data.items():
  if((neg and v<-1) or (not neg and v>1)):
    print(k)
    neg = not neg

返回:

c
g
h
j

尽管确保键已排序,但逻辑与字典或数据框相同:

(pi6 637) $ cat /tmp/x.py
#! /usr/bin/env python
# -*- coding: UTF8 -*-

import pandas as pd

data = dict( a= 0.2, b= 0.3, c= -1.5, d= -1.3, e= 0.3, f= 0.2, g= 12, h= -1.2, i= -1.3, j= 1.4, k= 0.3)
df = pd.Series(data)

neg = True
for i,r in df.sort_index().iteritems():
  if((neg and r<-1) or (not neg and r>1)):
    print(i)
    neg = not neg

(pi6 638) $ /tmp/x.py
c
g
h
j