2017-09-22 2 views
2

I 3 Bereiche der Datenwerte in Serie haben:Finden Sub Wertebereich in definierten Bereichen

min_range:

27 893.151613 
26 882.384516 
20 817.781935 
dtype: float64 

max_range:

28 903.918710 
27 893.151613 
21 828.549032 
dtype: float64 

Ich habe eine Liste von Bereichen erstellt :

range = zip(min_range, max_range) 

Ausgabe:

[(893.1516129032259, 903.91870967741943), (882.38451612903225, 893.1516129032259), (817.78193548387094, 828.54903225806447)] 

Ich habe einen Unterbereich bekam:

Unter range1: 824 Unter range2: 825

Ich möchte die Region, in der die Unterbereich liegt zu finden.

for p,q in zip(min_range, max_range): 
    if (sub-range1 > p) & (sub-range2 < q): 
     print p,q 

Ausgang: 817,781935484 828,549032258

ich die jeweilige Position von diesem definierten "Bereich" finden möchten.

Erwartete Ausgabe:

817.781935484 828.549032258 
range = 2 (Position in the range list) 

Wie kann ich das erreichen? Jede Hilfe wäre willkommen.

Antwort

4

Verwenden Auflisten der Index d.h

for i,(p,q) in enumerate(zip(min_range, max_range)): 
    if (sub_range1 > p) & (sub_range2 < q): 
     print(i) 

Ausgabe zu erhalten: 2

+0

Ich nehme an, 'p' und' q' sind Floats. Verwenden Sie in diesem Fall nicht bitweise Operatoren. –

+0

anstelle von & zu verwenden 'und'? – Dark

+0

Wenn sie keine Serien/Datenrahmen sind, dann ist '&' ein bitweises UND, kein logisches UND. –

0

Ein einfacher Ansatz Zähler verwendet wird.

cnt = 0 
for p,q in zip(min_range, max_range): 
    if (sub-range1 > p) & (sub-range2 < q): 
     print p,q 
     print cnt 
    cnt = cnt + 1 
Verwandte Themen