pandas Unterscheidung zwischen str und Objekttypen

8

Numpy scheint zwischen str und object Typen zu unterscheiden. Zum Beispiel kann ich ::

tun %Vor%

Wobei dtype ('S') und dtype ('O') jeweils str und object entsprechen.

Allerdings scheinen Pandas diese Unterscheidung zu fehlen und erzwingen str bis object . ::

%Vor%

Das Erzwingen des Typs auf dtype('S') hilft auch nicht. ::

%Vor%

Gibt es eine Erklärung für dieses Verhalten?

    
Meitham 19.01.2016, 15:48
quelle

1 Antwort

13

Numpys string dtypes sind keine Python-Strings.

Daher verwendet pandas absichtlich native Python-Strings, die ein Objekt dtype erfordern.

Zunächst möchte ich ein wenig von dem zeigen, was ich meine, wenn numpys Strings anders sind:

%Vor%

Nun ist 'x' ein numpy string dtype (feste Breite, c-ähnliche Zeichenfolge) und y ist ein Array von nativen Python-Strings.

Wenn wir versuchen, über 7 Zeichen hinauszugehen, sehen wir einen unmittelbaren Unterschied. Die string dtype-Versionen werden abgeschnitten:

%Vor%

Während die Versionen des Objekt dtype eine beliebige Länge haben können:

%Vor%

Als nächstes können die Zeichenfolgen |S dtype den Unicode nicht korrekt halten, obwohl es auch einen Unicode-String-Dtyp fester Länge gibt. Ich werde ein Beispiel für den Moment überspringen.

Schließlich sind numpys Strings tatsächlich änderbar, während Python-Strings nicht veränderbar sind. Zum Beispiel:

%Vor%

Aus all diesen Gründen hat pandas entschieden, C-like Strings fester Länge niemals als Datentyp zuzulassen. Wie Sie bemerkt haben, funktioniert der Versuch, eine Python-Zeichenkette in eine fixed-with-numpy-Zeichenkette zu zwingen, nicht in pandas . Stattdessen werden immer native Python-Zeichenfolgen verwendet, die sich für die meisten Benutzer intuitiver verhalten.

    
Joe Kington 19.01.2016, 18:13
quelle

Tags und Links