2014-06-24 13 views
5

ich die Datei in Buch „Python for Data Analysis“ erwähnt heruntergeladen haben, und würde durch die FEC Beispiel Datenbank in Seite erwähnt 278. Ich erhalte die folgende Art Fehler als ich den Befehl ausgeführt habe. Meine Versionen: Python 3.4; Pandas: 0.14.0. Betriebssystem: Windows 8Python Pandas Datenrahmen: unorderable Typen: str()> int()

>>> fec=pd.read_csv('c:\python\P00000001-ALL.csv') 
>>> (fec.contb_receipt_amt > 0).value_counts() 
>>> TypeError: unorderable types: str() > int() 

Aber es ist nicht nur dieser Datensatz. Jeder Datensatz, mit dem ich arbeite, hat ein ähnliches Problem. Int (Number) -Datentypen werden als Objekte wie alles andere importiert, und wenn ich einen Vergleich mit Zahlen (> 0) an ihnen führe, erhalte ich den obigen Fehler. Worum geht es bei der Arbeit? Ich habe versucht, mit der Option dtype zu importieren, die einen Fehler auslöst, der besagt, dass int64 oder Float64 nicht verfügbar ist. Ich bin mir sicher, dass es einen richtigen Weg gibt. So laden Sie den Datenrahmen mit den richtigen Datentypen.

Jede Hilfe wird geschätzt.

+0

Nun haben Sie bereits geschlossen, dass eine Zeichenfolge in einen int Vergleich wird nicht funktionieren, sollte es die dtypes zu 'read_csv' aus dem Aufruf abgeleitet haben, die ein wenig seltsam ist, was passiert, wenn Sie den Typ umwandeln passiert:' fec.contb_receipt_amt = fec.contb_receipt_amt.astype (np.float64) 'funktioniert es dann – EdChum

+1

ich bemerke Sie Ihre Schrägstriche im Pfad nicht zu entkommen, ist richtig diese Belastung? versuchen 'EEV = pd.read_csv (R'C: \ Python \ P00000001-ALL.csv ')' – EdChum

+0

ich Ihren Code gegen die Github repos gerade getestet: https://github.com/pydata/pydata-book/tree/ Master/CH09 und es funktionierte gut, so dass ich nicht weiß, was dein Problem ist, können Sie einen Link auf Ihre Daten veröffentlichen, damit ich einen Blick – EdChum

Antwort

3

bekam ich diesen Fehler für einige nicht identisch Daten. Ich löste es zuerst mit einer Typänderung.

Versuchen:

fec[[contb_receipt_amt]] = fec[[contb_receipt_amt]].astype(str) 

Dann versuchen Sie es erneut die Zählung.

Verwandte Themen