Ersetzen Sie ungültige Werte, die mit Keiner in Pandas DataFrame

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

Können Sie df.replace('pre', 'post') und ersetzen können Sie einen Wert mit einem anderen, aber dies kann nicht getan werden, wenn Sie ersetzen möchten, mit None Wert, die, wenn Sie versuchen, erhalten Sie eine seltsame Folge.

Hier also ein Beispiel:

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

welche gibt ein erfolgreiches Ergebnis zurück.

Aber,

df.replace('-', None)

das gibt einen folgenden Ergebnis:

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 so ein komisches Ergebnis zurückgegeben werden?

Da will ich Gießen Sie das Daten-frame in der MySQL-Datenbank, ich kann nicht NaN Werte in jedem element, in meine Daten-frame und statt setzen wollen None. Sicherlich, Sie können die erste änderung '-' zu NaN konvertieren und dann NaN zu None, aber ich möchte wissen, warum der dataframe wirkt in so eine schreckliche Art und Weise.

Getestet auf pandas 0.12.0 dev auf Python 2.7 und OS X 10.8. Python ist eine
pre-installierte version auf OS X installiert und ich pandas durch die Verwendung von SciPy
Super Pack Skript, für Ihre Informationen.

  • Hat die write_frame nicht analysieren NaNs zu nones?
  • Yup. Sie begegnen InternalError: (1054, u"Unknown column 'nan' in 'field list'") Fehler. Ich weiß nicht, über Lösungen, die auf anderen als Umwandlung NaN zu None vor der Ausführung write_frame Methode.
  • Welche version von pandas sind verwenden Sie?
  • Scipy super pack gibt dev? Ok, gut ich denke auf jeden Fall sollten Sie heben Sie es als ein Problem, auf github, sollte nicht allzu schwer zu beheben ist.
  • Wenn Sie dieses Lesen von Daten aus CSV - /Excel, können Sie Lesen Sie diese Werte wie NaN mit na_values argument. Weitere Informationen in dieser Antwort.
InformationsquelleAutor Blaszard | 2013-06-13
Schreibe einen Kommentar