我有数据帧"子集"这是较大数据帧的前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']))
但这会产生同样的错误!
任何帮助表示赞赏
答案 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
的情况,此方法不会是最快的。