2016-12-13 3 views
1

Ich schreibe Code, um Mitglieder Daten zu erhalten, die über $ 5000 und auch mit Neuheit von mehr als 100 Tagen ausgeben, um diese Mitglieder als die oberste Gruppe zu klassifizieren. Die erste Zeile unten funktioniert, aber wenn ich eine weitere Bedingung (zweite Zeile) hinzufüge, filtert sie nicht mehr. Kann mir jemand sagen warum? Vielen Dank!Python - Vergleichsoperator mehr als 2 Bedingungen

GrpA=(MbrKPI3[(MbrKPI3['Amt'])>5000]) 

GrpA=(MbrKPI3[(MbrKPI3['Amt'])>5000 & (MbrKPI3['Recency']>100)]) 

Antwort

8

Sie einen Tippfehler haben, die erste schließende Klammer muss um den Vergleichswert:

GrpA=(MbrKPI3[(MbrKPI3['Amt'])>5000 & (MbrKPI3['Recency']>100)]) 
          ^--- here 

sollte sein:

GrpA=(MbrKPI3[(MbrKPI3['Amt']>5000) & (MbrKPI3['Recency']>100)]) 
            ^--- to here 

auch die äußeren Klammern sind nicht erforderlich:

GrpA = MbrKPI3[(MbrKPI3['Amt']>5000) & (MbrKPI3['Recency']>100)] 
+1

ist die '&' eine logische und für einen Zweck Pose? oder ein einfaches 'und' hätte den Job erledigt? –

+2

@ Jean-FrançoisFabre für Arrays müssen Sie '&', 'und' verstehen nicht Arrays, hier vergleicht Arrays ein Array von Booleans. Sie erhalten einen 'ValueError', da er mehrdeutig ist, da er einen Skalar und kein Array boolescher Werte erwartet. – EdChum

+0

Danke EdChum für die Hilfe! – unclegood