pandas DataFrame legen Wert auf boolean Maske

Ich versuche mit einer Anzahl von verschiedenen in ein pandas DataFrame alle auf den gleichen Wert. Ich dachte, ich Verstand Boolesche Indexierung für die pandas, aber ich habe nicht gefunden, alle Ressourcen auf diesem speziellen Fehler.

import pandas as pd 
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
mask = df.isin([1, 3, 12, 'a'])
df[mask] = 30
Traceback (most recent call last):
...
TypeError: Cannot do inplace boolean setting on mixed-types with a non np.nan value

Oben, ich alle ersetzen will, der True Einträge in der Maske mit dem Wert 30.

Konnte ich tun df.replace statt, aber die Maskierung fühlt sich ein bisschen intuitiver und effizienter hier. Kann jemand erklären Sie den Fehler und bieten eine effiziente Möglichkeit, um alle Werte?

  • Könnten Sie bestätigen, ob meine Antwort oder JohnE ' s Ergebnis ist das, was Sie gewünscht und aktualisieren Sie Ihre Frage klar darauf hinweisen, danke
  • Danke, @EdChum. Ich wollte, um die True Werte in die Maske ein und verlassen Sie die False Werte die gleichen. Ich bearbeitet die Frage für Klarheit.
  • Keine Sorge, ich aktualisierte meine Antwort, Sie einfach nur invertieren der Maske zu erreichen, was Sie wollen
  • Hey, Ihr rufen, aber ich wollte nicht für Sie, schalten Sie das Häkchen, nur versuchen zu klären, gewünschte Ergebnisse. Ich denke, @EdChums Antwort ist etwas sauberer und präziser, wenn Sie wollen, schalten Sie es zurück zu sein.
  • Ja, du hast Recht. Sie sind beide gute Antworten. Sorry an alle!
  • Mach dir keine sorgen über das Häkchen, dass das, was die upvotes sind, da es viele richtige Antworten

InformationsquelleAutor Michael K | 2015-05-29
Schreibe einen Kommentar