Wie erstelle ich Werte mit Keine im Pandas-Datenrahmen in Python?

Gibt es irgendeine Methode, um Werte mit None in Pandas in Python zu ersetzen?

Du kannst df.replace('pre', 'post') und kannst einen Wert durch einen anderen ersetzen, aber das kann nicht getan werden, wenn man mit None Wert ersetzen möchte, was man wenn man versucht, ein seltsames Ergebnis zu bekommen.

Also hier ist ein Beispiel:

 df = DataFrame(['-',3,2,5,1,-5,-1,'-',9]) df.replace('-', 0) 

Die ein erfolgreiches Ergebnis zurückgibt.

Aber,

 df.replace('-', None) 

Die ein folgendes Ergebnis zurückgibt:

 0 0 - // this isn't replaced 1 3 2 2 3 5 4 1 5 -5 6 -1 7 -1 // this is changed to `-1`... 8 9 

Warum wird ein so seltsames Ergebnis zurückgegeben?

Da ich diesen Datenrahmen in die MySQL-Datenbank gießen möchte, kann ich keine NaN Werte in jedes Element in meinem Datenrahmen setzen und stattdessen None setzen. Sicherlich kannst du zuerst '-' zu NaN wechseln und dann NaN zu None umwandeln, aber ich möchte wissen, warum das Dataframe so schrecklich wirkt.

  • Finden und Ersetzen von Elementen in einer Liste (Python)
  • Wie man bedingten Charakter Ersatz in einem String zu tun
  • Ersetzen Sie alle Elemente von Python NumPy Array, die größer als ein Wert sind
  • Hilfe beim Ersetzen von Nicht-ASCII-Zeichen in Python
  • Ersetzen Sie einmalige Werte von pandas data-frame
  • Wie kann ich einen bestimmten String in einem String in Python ersetzen?
  • 2 Solutions collect form web for “Wie erstelle ich Werte mit Keine im Pandas-Datenrahmen in Python?”

    Tatsächlich gibt es in späteren Versionen von Pandas einen TypeError:

     df.replace('-', None) TypeError: If "to_replace" and "value" are both None then regex must be a mapping 

    Sie können es tun, indem Sie entweder eine Liste oder ein Wörterbuch:

     In [11]: df.replace('-', df.replace(['-'], [None]) # or .replace('-', {0: None}) Out[11]: 0 0 None 1 3 2 2 3 5 4 1 5 -5 6 -1 7 None 8 9 

    Aber ich empfehle mit NaNs anstatt ohne:

     In [12]: df.replace('-', np.nan) Out[12]: 0 0 NaN 1 3 2 2 3 5 4 1 5 -5 6 -1 7 NaN 8 9 

    where ist wohl was du suchst Damit

     data=data.where(data=='-', None) 

    Von den panda docs :

    where ein Objekt mit der gleichen Form wie das Selbst zurückkehrt und dessen entsprechende Einträge von selbst sind, wo cond wahr ist und sonst von anderen ist).

    Python ist die beste Programmiersprache der Welt.