Python错误类型字符串

时间:2018-02-19 12:44:09

标签: python floating-point

我有一个数据帧,数据列的DF如下:

        X       Y         Z     DIST_1
0       309000  563250    0     681483125
1       309000  563300    0     679910525
2       309000  563350    0     678342925

尝试使用以下

在DIST_1上运行math.sqrt时
DF['DIST'] = math.sqrt(DF['DIST_1'])

我正在

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

我尝试在单个列和整个DataFrame上运行三个单独的函数来解决此问题:

DF['DIST_1'] = pd.to_numeric(DF['DIST_1'])

DF['DIST_1'] = (DF['DIST_1']).astype(float)

DF= DF.applymap(float)

这些中的每一个似乎都具有将DIST_1更改为浮点数的预期结果。这是运行后的输出

DF['DIST_1'] = (DF['DIST_1']).astype(float)

        X       Y         Z     DIST_1
0       309000  563250    0     681483125.0
1       309000  563300    0     679910525.0
2       309000  563350    0     678342925.0

我再次运行

DF['DIST'] = math.sqrt(DF['DIST_1'])

但结果又是

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

我的代码或方法有什么错误?

2 个答案:

答案 0 :(得分:4)

问题是math.sqrt只能使用一个号码,而不是pandas.Series。一种方法是使用apply@Kalyan推荐in the other answer

更简单的解决方案是使用一个可以处理浮点数向量的函数numpy.sqrt

import numpy as np
DF['DIST'] = np.sqrt(DF['DIST_1'])

这也应该比将math.sqrt函数重复应用于系列的每个元素要快得多。

答案 1 :(得分:2)

您可以尝试以下

DF['DIST_1'] = DF['DIST_1'].apply(math.sqrt)