TypeError:使用exp函数时无法将系列转换为<class'float'=“”>

时间:2017-05-16 21:36:20

标签: python pandas types typeerror

我有数据帧&#34;子集&#34;这是较大数据帧的前50列。我试图通过将一列的值除以另一列中的值而形成的数字上使用exp函数:

import math
subset['exp'] = math.exp(subset['A'] / subset['B'])

然而,这会返回以下错误:

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

我感到困惑,因为这两列都是我使用测试过的浮点类型:

df['A'].dtype

我甚至尝试使用float函数转换它们(即使它们看起来已经是浮点数):

 subset['exp'] = math.exp(float(subset['A']) / float(subset['B']))

但这会产生同样的错误!

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

math.exp()需要一个浮点数,而是传递一个系列。使用numpy.exp()math.exp()的矢量化版本。)

答案 1 :(得分:1)

与DYZ指出的一样,您可以使用numpy并获得以下结果:

subset['exp'] = np.exp(subset['A'] / subset['B'])

此外,如果您希望继续使用math.exp,则可以使用apply

subset['exp'] = subset.apply(lambda x: math.exp(x.A / x.B), axis=1)

apply遍历各行或dataframe。但是,对于大dataframe的情况,此方法不会是最快的。