Python TypeError: cannot convert die Serie <class 'int'> beim Versuch, Mathematik auf dataframe
Habe ich einen Daten-frame, der ungefähr so aussieht:
defaultdict(<class 'list'>, {'XYF': TimeUS GyrX GyrY GyrZ AccX \
0 207146570 0.000832914 0.001351716 -0.0004189798 -0.651183
1 207186671 0.001962787 0.001242457 -0.0001859666 -0.6423497
2 207226791 9.520243E-05 0.001076498 -0.0005664826 -0.6360412
3 207246474 0.0001093059 0.001616917 0.0003615251 -0.6342875
4 207286244 0.001412051 0.0007565815 -0.0003780428 -0.637755
[103556 rows x 12 columns], 'DAR': TimeUS RSSI RemRSSI TxBuf Noise RemNoise RxErrors Fixed
0 208046965 159 161 79 25 29 0 0
1 208047074 159 161 79 25 29 0 0
2 208927455 159 159 91 28 28 0 0
3 208927557 159 159 91 28 28 0 0
[4136 rows x 8 columns], 'NK2': TimeUS IVN IVE IVD IPN IPE IPD IMX IMY IMZ IYAW \
0 207147350 -0.02 0.02 0.00 -0.02 0.01 0.20 0 0 0 1.94
1 207187259 -0.02 0.02 0.00 -0.02 0.01 0.20 0 0 0 1.94
2 207227559 -0.02 0.02 0.00 -0.02 0.01 0.14 0 0 0 1.77
3 207308304 0.02 0.02 0.00 -0.01 0.01 -0.05 0 0 0 1.77
4 207347766 0.02 0.02 0.00 -0.01 0.01 -0.05 0 0 0 0.82
Ich zunächst getrennt die Spalte, die ich tun möchte Mathematik mit:
new_time = dfs['XYF']['TimeUS']
Dann habe ich versucht, einige Dinge zu tun, einige in der Mathematik auf, aber ich hatte kein Glück.
Zuerst habe ich nur behandelt es wie eine Liste. so
new_time_F = new_time / 1000000
Das hat nicht funktioniert, gab mir einen float-Fehler von:
TypeError: unsupported operand type(s) for /: 'str' and 'int'
also ich habe das:
new_time_F = float (new_time) / 1000000
Diese geben mir eine Fehlermeldung:
TypeError: cannot convert the series to <class 'float'>
Ich habe keine Ahnung, wohin Sie gehen von hier aus.
- Sie haben ein dict mit einer Liste der dfs als die Werte und den Namen des dfs, wie die Schlüssel? Dies ist, was es zeigt und nicht ein df.
- Ja, sorry, wusste nicht, es war ein großer Unterschied zwischen df und dfs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist, wenn Sie dies tun (wie zuvor):
astype
zu dataframes. Verwendenapplymap
statt. z.B.dfs['XYF'] = dfs['XYF'].applymap(float)
astype
Methode gilt fürSeries
pandas Objekte (d.h. dataframe Spalten).applymap
wendet eine Funktion auf alle Elemente der dataframedfs
ist ein Wörterbuch, das enthält dataframes. Sie können die Funktion anwenden, um ein WörterbuchScheint Ihre anfänglichen Daten enthält strings und nicht zahlen. Wahrscheinlich ist es am besten, um sicherzustellen, dass die Daten bereits in der benötigten Art vorne.
Allerdings können Sie konvertieren von strings in zahlen wie diese:
statt
float(series)
Können Sie aus der
pd.to_numeric(s)