簡體   English   中英

Python - Pandas 系列類型錯誤中的傳播

[英]Propagation in Python - Pandas Series TypeError

我試圖通過將 Pandas 數據幀的兩列加在一起然后取平方根來傳播 Python 中的不確定性。 但是,當我嘗試使用 Python 的math.sqrt function 時,我收到一個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:如果您出於某種原因想要/需要避免 numpy,您可以apply math.sqrt應用於數字列。 這可能比選項 1 慢,但在我的測試中有效:

   joinedDF['combined_error'] = (joinedDF['error1']**2 + 
                                 joinedDF['error2']**2).apply(math.sqrt)

次要風格注釋:通常建議使用索引(方括號)而不是屬性訪問(點表示法)來引用 DataFrame 列,因此我相應地修改了您的代碼。 更多閱讀: 使用方括號或點訪問列有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM