数据框操作TypeError:无法将系列转换为<class'float'=“”>

时间:2019-04-28 06:59:22

标签: python-3.x

我有一个要计算exp ^ -x的数据框。 在这种情况下,X是数据框中同一行中另一列的值。

对于某些原因,我最终遇到“ TypeError:无法将系列转换为类'float'>”

有什么想法吗?

df  = pd.DataFrame([["Gothenburg", "2018-01-05", "jan", 1.5, 2.3, 107],
 ["Gothenburg", "2018-01-15", "jan", 1.3, 3.3, 96],
 ["Hallsberg", "2018-02-14", "feb", 2.2, 2.3, 168],
 ["Gothenburg", "2018-03-05", "mar", 1.5, 2.1, 96],
 ["Hallsberg", "2018-01-25", "jan", 2.5, 2.3, 87],
 ["Malmo", "2018-01-02", "jan", 1.6, 2.3, 104],
 ["Gothenburg", "2018-03-05", "mar", 1.9, 2.8, 102],
 ["Malmo", "2018-03-05", "mar", 0.7, 4.3, 151],
 ["Gothenburg", "2018-01-25", "jan", 1.7, 3.2, 45],
 ["Malmo", "2018-03-25", "mar", 1.0, 3.3, 98],
 ["Hallsberg", "2018-03-06", "mar", 3.7, 2.3, 142],
 ["Malmo", "2018-01-10", "jan", 1.0, 2.9, 112],
 ["Hallsberg", "2018-04-29", "apr", 2.7, 2.3, 100]])

df.columns = ['City', 'Date', 'Month', 'Mean1', 'Mean2', 'Mean3']

df["Val1"] = math.exp(-df["Mean1"])

print(df)

1 个答案:

答案 0 :(得分:1)

在代码中,有以下一行:

 df["Val1"] = math.exp(-df["Mean1"])

python数学标准库不会映射类似列表的数据结构(在这种情况下为Series)的值,​​而是将单个输入(float或int)映射到另一个输出,如此处引用:Python Standard Math docs

我建议您进行列表理解以解决此问题(即)

df["Val1"] = [math.exp(-val) for val in df["Mean1"])

此外,您可以使用python映射,甚至可以使用numpy python包来完成初始代码的构想(我将其留作练习之用。首先查看numpy文档) 。请花些时间查看python文档,并了解为什么给出的错误消息就是它。