ich habe hier eine kleine Übungscsv die wie folgt aussieht:
Wenn ich die mit pd.read_csv einlese passt auch alles soweit:
Code: Alles auswählen
import pandas as pd
df = pd.read_csv("./meinecsv.csv", sep=";", decimal="." , encoding="utf-8",
dtype = {"Farbe" : "int", "Menge" : "int"})
ff = df.pivot(index='Artikelname', columns='Farbe')['Menge'].fillna('x')
ff.dtypes
Farbe int32
Menge int32
Artikelname object
Wenn allerdings der Pivot ausgeführt wird, ist alles dann object.
Eigentlich sollte alles INT sein und am liebsten würde ich hier schon sagen "Artikelname : int"
Code: Alles auswählen
import pandas as pd
df = pd.read_csv("./meinecsv.csv", sep=";", decimal="." , encoding="utf-8",
dtype = {"Farbe" : "int", "Menge" : "int","Artikelname" : "int"})
ff = df.pivot(index='Artikelname', columns='Farbe')['Menge'].fillna('x')
ff
invalid literal for int() with base 10: 'ALT9995'
Lasse ich die dtype Zuweisung weg, sieht es schon im Prinzip ganz gut aus.
Nur benötige ich für die weitere Verarbeitung bei Artikelname INT
Gibt es eine Möglichkeit so eine Ausnahme abzufangen? Ich versuchte es bereits wie folgt:
Suche in df['Artikelname'] nach dtype INT, dann bist du True.
Code: Alles auswählen
bool = []
for zahl in df.Artikelnummer:
if zahl >= 1:
bool.append(True)
else:
bool.append(False)
Würde mich freuen wenn jemand meine Lösungsansatz bewerten könnte.
Vielen Dank