In einem Pandas-Dataframe kann eine Spalte mit dtype = object tatsächlich Elemente gemischter Typen enthalten, z. B. Integer und Strings.Pandas: Wie identifiziert man Spalten mit einem dtype-Objekt, aber mit gemischten Typen?
In diesem Beispiel ist Spalte ein dtype Objekt, aber der erste Punkt ist Zeichenfolge während alle anderen int sind:
import numpy as np, pandas as pd
df=pd.DataFrame()
df['a']=np.arange(0,9)
df.iloc[0,0]='test'
print(df.dtypes)
print(type(df.iloc[0,0]))
print(type(df.iloc[1,0]))
Meine Frage ist: ist es eine schnelle Möglichkeit, die mit dtype Spalten zu identifizieren = Objekt enthält in der Tat gemischte Typen wie oben? Da Pandas kein dtype = str haben, ist dies nicht sofort ersichtlich.
Ich habe jedoch Situationen gehabt, wo eine große CSV-Datei in Pandas importieren, ich eine Warnung wie bekommen würde:
sys:1: DtypeWarning: Columns (15,16) have mixed types. Specify dtype option on import or set low_memory=False
Gibt es einen einfachen Weg, dies zu replizieren und explizit Liste die Spalten mit gemischtem Typen? Oder muss ich manuell nacheinander durchgehen, um zu sehen, ob ich sie in Strings usw. konvertieren kann?
Der Hintergrund ist, dass ich versuche, einen Datenrahmen zu einem Microsoft SQL Server mit DataFrame.to_sql und SQLAlchemy zu exportieren. Ich bekomme eine
OverflowError: int too big to convert
aber mein Datenframe enthält keine Spalten mit dtype int - nur Objekt und float64. Ich vermute, das liegt daran, dass eine der Objektspalten sowohl Strings als auch Integer enthalten muss.
Danke!
nur verwenden 'dtype' Parameter beim Aufruf von' df.to_sql (...) ' – MaxU
, dass ein Wörterbuch Mapping vorbei Spaltennamen dtypes bedeuten würde, das heißt Abbilden alle Objektspalten zu bespannen. Zwei Zweifel: 1) Es scheint nicht sehr anders zu sein, als vor dem Export in Pandas selbst zu konvertieren. 2) Was könnte sonst noch eine Objektspalte enthalten (die ich nicht in eine Zeichenkette konvertieren möchte)? Ich nehme Daten an, richtig? –
Ich verstehe nicht, was das Problem ist. Sie können keine gemischten Datentypen (für eine Spalte) in der SQL DB haben, daher werten Sie Ihre Werte entweder selbst aus oder es wird implizit für Sie erledigt ... – MaxU