繁体   English   中英

Python TypeError:无法将系列转换为 <class 'int'> 尝试对数据框进行数学运算时

[英]Python TypeError: cannot convert the series to <class 'int'> when trying to do math on dataframe

我有一个看起来像这样的数据框:

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  

我首先将要进行数学运算的列分开:

new_time = dfs['XYF']['TimeUS']

然后我尝试了几件事来做一些数学运算,但是我没有运气。 首先,我只是将其视为列表。 所以

new_time_F = new_time / 1000000

那没有用,给了我一个浮动错误:

TypeError: unsupported operand type(s) for /: 'str' and 'int'

所以我这样做:

new_time_F = float (new_time) / 1000000

这给我一个错误:

TypeError: cannot convert the series to <class 'float'>

我不知道从这里去哪里。

如果您这样做(如先前所建议),该怎么办:

new_time = dfs['XYF']['TimeUS'].astype(float)
new_time_F = new_time / 1000000

似乎您的初始数据包含字符串而不是数字。 最好最好先确保数据已经是必需的类型。

但是,您可以将字符串转换为数字,如下所示:

pd.Series(['123', '42']).astype(float)

代替float(series)

您可以从pd.to_numeric(s)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM