我想計算兩隻大熊貓列I
和Imean
用下面的代碼的絕對差值之間pandas.apply()的區別返回NaN兩列
def diff(row):
""" calculate absolute difference of this row """
return np.abs(row['I'] - row['Imean'])
spectrum['diff'] = spectrum.apply(diff, axis=1)
每當spectrum['I']
都是零,spectrum['diff']
包含所有nan
。我錯過了什麼? (如果我檢查spectrum['I']
爲全零的情況下,然後spectrum['diff'] = spectrum['Imean']
我可以規避錯誤但仍...)。
補充信息:
好吧,我進一步調查,並找到了我的問題。我通過曲線下方的面積歸我的數據,並嘗試通過零避免分裂,因爲我知道,有可能是全零目前的數據。
s = spectrum['I'].sum()
try:
spectrum['I'] /= s
except ValueError:
spectrum['I'] = 0.0
我沒有得到任何警告,運行時間從我的劇本,但如果我在IPython的控制檯上運行我的代碼,我得到RuntimeWarning: invalid value encountered in true_divide
和spectrum['I']
得到由NaN
條代替。如果我使用ZeroDivisionError
也是如此。 那麼,如何正確地避免被零除這裏?
有可能是一堆你錯過的東西,但我注意到,失蹤的第一件事是樣本數據集。嘗試在提出問題時遵循這些標準:http://stackoverflow.com/help/mcve – piRSquared