J'ai un cadre de données qui ressemble à ceci:
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
J'ai d'abord séparé la colonne avec laquelle je veux faire des mathématiques:
new_time = dfs['XYF']['TimeUS']
Ensuite, j'ai essayé plusieurs choses pour faire des calculs, mais je n’ai pas eu de chance ... Tout d’abord, je l’ai traitée comme une liste. alors
new_time_F = new_time / 1000000
Cela n'a pas fonctionné, m'a donné une erreur de flottement de:
TypeError: unsupported operand type(s) for /: 'str' and 'int'
alors j'ai fait ceci:
new_time_F = float (new_time) / 1000000
Cela me donne une erreur:
TypeError: cannot convert the series to <class 'float'>
Je ne sais pas ou aller d'ici.
Et si vous faites cela (comme suggéré précédemment):
new_time = dfs['XYF']['TimeUS'].astype(float)
new_time_F = new_time / 1000000
Il semble que vos données initiales contiennent des chaînes et non des nombres. Il serait probablement préférable de s’assurer que les données sont déjà du type requis à l’avance.
Cependant, vous pouvez convertir des chaînes en nombres comme ceci:
pd.Series(['123', '42']).astype(float)
au lieu de float(series)
Vous pouvez utiliser le pd.to_numeric(s)