2017-07-29 3 views
0

ich eine CSV bin Laden mit file:Load (Strings und nils) als Strings

converters = { 
    ... 
    col1: str, 
    ... 
} 

prop = pd.read_csv(
    'input/properties_2016.csv', 
    dtype=types, 
    converters=converters, 
) 

Die Daten für diese Spalte ist wie:

'acura',123 
'ford',234 
'dodge',345 
,567 

So ist der vierte Punkt ist interpretiert als ein N/A-Wert.

Ich möchte diese Spalte als Zeichenfolge laden. Ich denke String ist besser als Objekt, weil ich neu bin und es ist einfach für mich zu sagen "wenn es ein Objekt ist, hast du es nicht richtig gemacht, also repariere wie du diese Spalte importierst."


Aber danach, wenn ich die Spalte inspizieren:

prop.dtypes['col1'] 

Der Typ ist object.

ich den NA-Wert wurde erwartet, um eine Zeichenfolge zu konvertieren, weil:

str(None) 

'None' 

So zurückkommt, wie kann ich diesen Import als String machen ?

Antwort

4

Pandas legt den Dtyp einer Reihe von Strings auf object fest, so dass die Strings variable Breite haben können. Soweit ich sehen kann, machst du schon alles richtig.

Wenn Ihre Daten ähnlich denen sind, die angezeigt werden, können Sie sogar die dtype Parameter entfernen - pd.read_csv erkennt den richtigen dtype automatisch. Anstelle der converters Parameter könnten Sie keep_default_na=False (thanks to Mitch für diesen Vorschlag) verwenden:

prop = pd.read_csv('input/properties_2016.csv', header=None, keep_default_na=False) 

ergibt

  0 1 
0 'acura' 123 
1 'ford' 234 
2 'dodge' 345 
3   567 

PS: Vermeiden Sie converters verwenden, wenn Sie können - die Wandlerfunktion auf jeden Wert angewendet wird in der Spalte getrennt, wenn Ihre CSV also groß ist, bedeutet das eine Menge Funktionsaufrufe, die das Parsing erheblich verlangsamen können.