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 列,因此我相应地修改了您的代码。更多阅读: