2017-09-05 2 views
0

Ich habe eine Excel-Datei und in diesem eine Zeile der Spalte Model hat Wert "9-3", das ist ein String-Wert. Ich überprüfte die Excel-Datei, um den Spalten-Datentyp als einfache Zeichenfolge anstelle von Datum zu haben. Aber immer noch Wenn ich read_excel benutze und es in einen Datenrahmen umwandele, wird der Wert als 2017-09-03 00:00:00 anstelle von String "9-3" angezeigt. Hier ist, wie ich die Excel-Datei zu lesen:Spaltenwert wird als Datum anstelle von Zeichenfolge gelesen - Pandas

table = pd.read_excel('ManualProfitAdjustmentUpdates.xlsx' , header=0, converters={'Model': str}) 

Jede Idee, warum Pandas nicht Wert als String behandeln, auch wenn ich den Konverter als str gesetzt?

+0

Könnten Sie ein Snippet der Excel-Datei teilen - idealerweise die Spaltenüberschriften und die erste Datenzeile. Wenn die Daten privat sind, wäre nur die Kopfzeile OK. –

+0

(Grund für den Kommentar ist zu replizieren, sondern auch zu überprüfen, ob die Definition "Konverter" korrekt definiert ist). –

Antwort

2

Die Einstellung für die einfache Zeichenfolge in der Excel-Datei wirkt sich nur darauf aus, wie die Daten in Excel angezeigt werden. Die Einstellung str im Konverter wirkt sich nur auf die Behandlung der Daten aus.

Damit die Excel-Datei die Daten als Zeichenfolge zurückgibt, sollte das erste Zeichen der Zelle ein Apostroph sein. Ändern Sie "9-3" zu "9-3".

2

Das Problem kann mit Excel sein. Stellen Sie sicher, dass die gesamte Spalte als Text gespeichert ist und nicht nur der Singularwert, über den Sie sprechen. Wenn Excel die Spalte als Daten gespeichert hat, speichert sie ein Jahr in dieser Zelle, unabhängig davon, was angezeigt wird oder wie der Datentyp geändert wird. Pandas liest die gesamte Spalte als einen Datentyp. Wenn Sie Daten über 9-3 haben, wird es konvertiert. Das Ändern von Daten in Strings ohne Jahre kann schwierig sein. Es kann besser sein, das Excel-Blatt als csv zu speichern, sobald es im richtigen Format ist und dann pandas pd.read_csv() verwendet. Ich habe eine Test Arbeitsmappe "Book1.xlsx"

9-3 1 Hello 
12-1 2 World 
1-8 3 Test 

Dann

lief
import pandas as pd 
df = pd.read_excel('book1.xlsx',header=0) 
print(df) 

und bekam wieder meinen Datenrahmen korrekt zeichnen. So bin ich zu der Überzeugung gelangt, dass es ausgezeichnet ist. Sorry ist nicht die beste Antwort, aber ich glaube nicht, dass es ein Pandas Fehler ist.

Verwandte Themen