Pandas Obj list zu Int umwandeln

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
viktor11
User
Beiträge: 3
Registriert: Montag 21. Februar 2022, 16:31

Guten Tag,

ich versuche hier, meine lists of objects (SAM-x1 bis SAM_x6) in einen Dataframe zu joinen, und diesen dann in Integer umzuwandeln, um daraus Boxplots erstellen zu können. Das Zusammenlegen der Lists zu einem Dataframe hat schon gut funktioniert, allerdings hänge ich jetzt an der Umwandlung zu Int.

Hier der Code:

Code: Alles auswählen

data = pd.read_csv("performance_tests.csv", skiprows=3)

SAM_x1 = data.iloc[0:190, 2].tolist()
SAM_x2 = data.iloc[0:190, 4].tolist()
SAM_x3 = data.iloc[0:190, 6].tolist()
SAM_x4 = data.iloc[0:190, 8].tolist()
SAM_x5 = data.iloc[0:190, 10].tolist()
SAM_x6 = data.iloc[0:190, 12].tolist()

df = pd.DataFrame([SAM_x1, SAM_x2, SAM_x3, SAM_x4, SAM_x5, SAM_x6]
                 ).T
columns = ['SAM_x1','SAM_x2','SAM_x3','SAM_x4','SAM_x5','SAM_x6']    
                 
df['SAM_x1'] = pd.to_numeric(df['SAM_x1'],errors = 'coerce') 

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Input In [176], in <module>
     10 df = pd.DataFrame([SAM_x1, SAM_x2, SAM_x3, SAM_x4, SAM_x5, SAM_x6]
     11                  ).T
     12 columns = ['SAM_x1','SAM_x2','SAM_x3','SAM_x4','SAM_x5','SAM_x6']    
---> 14 df['SAM_x1'] = pd.to_numeric(df['SAM_x1'],errors = 'coerce') 
     17 #df['1'] = df['SAM_x1'].astype(float, errors = 'raise')
     18 #print(df.info())
     21 df

File ~/miniforge3/lib/python3.9/site-packages/pandas/core/frame.py:3505, in DataFrame.__getitem__(self, key)
   3503 if self.columns.nlevels > 1:
   3504     return self._getitem_multilevel(key)
-> 3505 indexer = self.columns.get_loc(key)
   3506 if is_integer(indexer):
   3507     indexer = [indexer]

File ~/miniforge3/lib/python3.9/site-packages/pandas/core/indexes/range.py:389, in RangeIndex.get_loc(self, key, method, tolerance)
    387             raise KeyError(key) from err
    388     self._check_indexing_error(key)
--> 389     raise KeyError(key)
    390 return super().get_loc(key, method=method, tolerance=tolerance)

KeyError: 'SAM_x1'
Was mache ich falsch, bzw. habe ich was übersehen?
Danke für die Unterstützung und viele Grüße!
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Nun, da hilft meistens ein Blick in die Dokumentation zu den Methoden die man benutzt:
https://pandas.pydata.org/docs/referenc ... Frame.html

Du erzeugst einen Dataframe und eine Liste mit Spaltennamen, diese Liste benutzt du aber nicht als Parameter für die Erzeugung des Dataframes.

Die Fehlermeldung ist doch auch eindeutig: KeyError , es gibt keine Spalte mit dem Namen "SAM_x1"
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten