Seite 1 von 1

Pandas Obj list zu Int umwandeln

Verfasst: Dienstag 22. Februar 2022, 13:32
von viktor11
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!

Re: Pandas Obj list zu Int umwandeln

Verfasst: Dienstag 22. Februar 2022, 13:44
von ThomasL
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"