时间序列数据与索引相比有3列,即时间
indexTime,A,B,C
我想列出所有最后10 B和C + ve
这意味着我必须做一个
groupby('A')
然后为
设置AND条件last N rows of B.min() > 0 AND last N rows of C.min() > 0
我该怎么办?
09:00,ABC,1,1
09:00,XYZ,15,2
09:01,ABC,2,4
09:01,XYZ,1,2
09:02,ABC,-1,2
09:02,XYZ,1,7
09:03,ABC,3,5
09:03,XYZ,5,2
让我们说最后3 在这种情况下,XYZ将满足条件,因为它有B和C列最后3行为正,而ABC没有所有最后3行为正
ABC 09:02的B栏是-1,所以即使ABC的C栏都是正数,它也会失败。但由于AND条件,它将失败
因此对于条件输出将是XYZ,因为只满足条件
答案 0 :(得分:1)
a = df.groupby('A').apply(lambda x: (x.tail(3) > 0).all(1))
print (a)
09:01 09:02 09:03
A
ABC True False True
XYZ True True True
b = a.index[a.all(1)]
print (b)
Index(['XYZ'], dtype='object', name='A')
print (a)
A ABC XYZ
09:01 True True
09:02 False True
09:03 True True
b = a.columns[a.all()].tolist()
print (b)
['XYZ']