Ich möchte Zeilen aus einem Pandas-Datenrahmen löschen, wenn sich der Wert der Datumsspalte in einer Datumsliste befindet. Der folgende Code funktioniert nicht:
a=['2015-01-01' , '2015-02-01']
df=df[df.datecolumn not in a]
Ich erhalte folgende Fehlermeldung:
ValueError: Der Wahrheitswert einer Serie ist nicht eindeutig. Verwenden Sie a.empty, a.bool (), a.item (), a.any () oder a.all ().
Series.isin
nichtDataFrame.isin
. Sie vergleichen für eine Spalte, nicht für eine ganze df.Sie können verwenden
Series.isin
:Während die Fehlermeldung vorschlägt, dass
all()
oderany()
verwendet werden kann, sind sie nur dann nützlich, wenn Sie das Ergebnis auf einen einzelnen Booleschen Wert reduzieren möchten. Dies ist jedoch nicht das, was Sie jetzt versuchen, nämlich die Mitgliedschaft aller Werte in der Serie anhand der externen Liste zu testen und die Ergebnisse intakt zu halten (dh eine boolesche Serie, die dann zum Schneiden des ursprünglichen DataFrame verwendet wird ).Mehr dazu lesen Sie in den Gotchas .
quelle