Seite 1 von 1

Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 12:12
von MacGruber
Hallo Forumskollegen,

mich plagt mal wieder ein Problem. Ich möchte eine Excel Tabelle in einen Dataframe einladen. Soweit kein Problem, aber eine Spalte der Tabelle enthält Komponentennummern, die nur aus Zahlen besteht und in manchen Fällen beginnen diese mit einer oder mehrerer Nullen. Beim Einladen in den Dataframe verschwinden die Nullen dann leider. So wird aus der Komponenten-Nr. 0012345 wird dann 12345.

Importiert wird die Tabelle mit der Methode read_excel aus Pandas.

Code: Alles auswählen

import pandas as pd
df=pd.read_excel("5636_TCs.xlsx")
In der Documentation zu read_excel habe ich keinen Hinweis gefunden. Aktuell behelfe ich mir indem ich via Excel vor jeder Komponenten-Nr ein "K" setze.
Weiß jemand von euch Rat?

Gruß Sascha

Re: Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 12:57
von __deets__
Also ich finde in der Dokumentation einen recht deutlichen Hinweis, der es erlaubt, den Datentyp einer jeden Spalte zu bestimmen.
dtypeType name or dict of column -> type, default None
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} Use object to preserve data as stored in Excel and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion.

Re: Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 14:12
von MacGruber
Danke __deets__
Leider weiß ich davon jetzt aber immer noch nicht, was von mir erwartet wird. Muss ich jetzt einen Numpy Datentyp verwenden??? Wenn ja; welchen? Ich habe nichts gesehen, dass nach String aussah...

Re: Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 14:15
von sparrow
Hier gib es einen super Artikel, den man findet, wenn man nach pandas dtype sucht: https://pbpython.com/pandas_dtypes.html

Re: Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 14:51
von __deets__
Na wenn es in Excel schon ein String ist, und du object angeben kannst, um das zu erhalten - dann hast du doch alles, was du brauchst. Oder du nimmst eine Konvertier-Funktion, die einfach nix macht.

Re: Excel Tabelle in Dataframe einladen mit nummerischen Wert als String

Verfasst: Dienstag 25. Februar 2020, 15:25
von MacGruber
@Sparrow
Vielen Dank. Dein Tipp war super. Ich habe jetzt den Dtype der Spalte als Object definiert. Das hat den gewünschten Effekt mit sich gebracht.
Der Import sieht jetzt folgender Maßen aus:

Code: Alles auswählen

df=pd.read_excel("5636_TCs.xlsx", dtype={"Komponente":object})