Python 中的传播 - Pandas 系列类型错误
Propagation in Python - Pandas Series TypeError
我试图通过将 Pandas 数据框的两列加在一起然后取平方根来传播 Python 中的不确定性。但是,当我尝试使用 Python 的 math.sqrt
函数时,我收到 TypeError: cannot convert the series to <class 'float'>
.
这是我一直在做的事情:
joinedDF['combined_error'] = math.sqrt((joinedDF.error1**2 + joinedDF.error2**2).astype(float))
使用 joinedDF.dtypes
,我已验证两个错误列都是 float64
。
我什至尝试过将所有内容分开,但我仍然收到 TypeError。关于如何解决这个问题有什么建议吗?
想到了两个选项。
选项 1:使用 numpy.sqrt
:
import numpy as np
joinedDF['combined_error'] = np.sqrt((joinedDF['error1']**2 +
joinedDF['error2']**2))
选项 2:如果您 want/need 出于某种原因要避免 numpy,您可以 apply
math.sqrt
到数字列。这可能比选项 1 慢,但在我的测试中有效:
joinedDF['combined_error'] = (joinedDF['error1']**2 +
joinedDF['error2']**2).apply(math.sqrt)
次要风格评论:通常建议使用索引(方括号)而不是属性访问(点表示法)来引用 DataFrame 列,因此我相应地修改了您的代码。更多阅读:
我试图通过将 Pandas 数据框的两列加在一起然后取平方根来传播 Python 中的不确定性。但是,当我尝试使用 Python 的 math.sqrt
函数时,我收到 TypeError: cannot convert the series to <class 'float'>
.
这是我一直在做的事情:
joinedDF['combined_error'] = math.sqrt((joinedDF.error1**2 + joinedDF.error2**2).astype(float))
使用 joinedDF.dtypes
,我已验证两个错误列都是 float64
。
我什至尝试过将所有内容分开,但我仍然收到 TypeError。关于如何解决这个问题有什么建议吗?
想到了两个选项。
选项 1:使用 numpy.sqrt
:
import numpy as np
joinedDF['combined_error'] = np.sqrt((joinedDF['error1']**2 +
joinedDF['error2']**2))
选项 2:如果您 want/need 出于某种原因要避免 numpy,您可以 apply
math.sqrt
到数字列。这可能比选项 1 慢,但在我的测试中有效:
joinedDF['combined_error'] = (joinedDF['error1']**2 +
joinedDF['error2']**2).apply(math.sqrt)
次要风格评论:通常建议使用索引(方括号)而不是属性访问(点表示法)来引用 DataFrame 列,因此我相应地修改了您的代码。更多阅读: