Ich habe einen Pandas-Datenrahmen erstellt und möchte die Daten basierend auf einer bestimmten booleschen Logik filtern. Im Wesentlichen möchte ich eher die Index-Match-Funktion als die einfache Filterung übertreffen. Ich habe viele andere Themen recherchiert.Datenrahmen Boolean Logic Index Match
Wenn ich meinen Filter anwende, gibt der Datenrahmen Null wahre Werte zurück. Warum werden 0 wahre Werte zurückgegeben, wenn ich mit meiner Logik flexibel war? und;
Wenn ich eine fünfte Säule eingeführt, sagen Spalte
'D'
, mitrandom.randomint(100-1000,100)
, welche Logik würde ich verwenden, um bedingt die Maximalwerte nur für SpalteD
zu finden? I.e. Kann ich erzwingen, dass ein Datenrahmen nur dann die höchsten wahren Werte aus einer bestimmten Spalte zurückgibt, wenn mehrere echte Werte zurückgegeben werden?
Beratung sehr geschätzt. Vielen Dank im Voraus.
import pandas as pd
df = pd.DataFrame({
'Step': [1,1,1,1,1,1,2,2,2,2,2,2],
'A': [4,5,6,7,4,5,6,7,4,5,6,7],
'B': [10,20,30,40,10,20,30,40,10,20,30,40],
'C': [0,0.5,1,1.5,2,2.5,0,0.5,1,1.5,2.0,2.5]
})
columns = ['Step','A','B','C']
df=df[columns]
new_df=df[(df.Step == 1) & (df.A == 4|5|6|7) & (df.B == 10|20|30|40)]
new_df
Können Sie ein Beispiel für '2.' hinzufügen? Brauchen Sie einen größten Wert? – jezrael