2016-07-20 31 views
6

0,1, -1'den oluşan pandalar veri karem var.pandalar veri çerçevesindeki olayları tespit etme

import pandas as pd 
df=pd.DataFrame({'indicator':[0, 0, 0, -1,0,0,1,0,-1,1,0,-1,0,1]}) 

ve -1 bazılarının ya da hiçbirinin sıfır ve bir + 1 ile takip edilir, öyle ki, her 1 ve 1 indisler için istemek. Yukarıdaki örnekte exapmle ben

[(3,6),(8,9),(11,13)] 
+0

Hi almak istiyorum, bu (bir dize olsaydı) düzenli ifadeler çok iyi bir çözüm olacaktır kendisi için bir ayrıştırma problemi gibi görünüyor. Korkarım veri şeması değerlerinin üstesinden gelmek ve aşağıdaki değerleri kontrol etmek zorunda kalacaksınız. –

cevap

5
s = pd.DataFrame({'indicator':[0, 0, 0, -1, 0, 
           0, 1, 0, -1, 1, 
           0, -1, 0, 1]}).squeeze() 

# reduce it to non-zeros 
s1 = s[s!=0] 
# must be -1 and next one be 1, grab index 
idx = s1.loc[(s1 == -1) & (s1 != s1.shift(-1))].index 
# grab s1 index and next index 
s2 = s1.index.to_series().shift(-1).loc[idx].astype(int) 
# zip to get tuples 
zip(s2.index, s2.values) 

[(3, 6), (8, 9), (11, 13)] 
+0

Kesinlikle çok genel bir çözüm, çok fazla panda içeren şeyler öğrenmek istiyorum hala öğrenmek istiyorum :-) – Ohumeronen

+0

Güzel cevabımı sildim ;-(sen haklıydın ve yazarın veride ardışık 1s ve -1'ler var. – Ohumeronen

+0

@Ohumeronen Bu güzel bir cevaptı.Teşekkür ederim sen aptallaştığımı düşünmüyorsun.Ben ne gördüğümü belirtmek istedim – piRSquared

İlgili konular