简体   繁体   English

如何在值系列中用 0 替换 Nan 和 Inf 值

[英]How to Replace Nan and Inf values with 0 in series of values

I am making some calculations for series of data as well as variables and am getting some Nan values as well as Infl values.. I am trying to replace these with zeros我正在对一系列数据和变量进行一些计算,并得到一些 Nan 值以及 Infl 值..我试图用零替换这些

I have tried using .fillna(0), but does not seem to make any changes to the results..我曾尝试使用 .fillna(0),但似乎没有对结果进行任何更改。

Here is what my code is:这是我的代码:

HWM_CntrMngFut = np.maximum.accumulate(data.ContrlMngFut_Return) #Compute High Water Marker 
 - the running maximum
DD_CntrMngFut = (HWM_CntrMngFut - data.ContrlMngFut_Return)/HWM_CntrMngFut #Drawdown

DD_CntrMngFut.fillna(0)

MDD_CntrMngFut = np.maximum.accumulate(DD_CntrMngFut) #Maximum Drawdown with control

print ("X is", data.X_MngFut )
print ("HWM is", HWM_CntrMngFut)
print ("DD is", DD_CntrMngFut)
print ("MDD is", MDD_CntrMngFut)


i_CntrMngFut = np.argmax(HWM_CntrMngFut - data.ContrlMngFut_Return)

print ("Maximum Drawdown for Managed Futures Without Control is %",MDD_MngFut[i_MngFut])
print ("Maximum Drawdown for Managed Futures With Control is 
 %",MDD_CntrMngFut[i_CntrMngFut])

Could someone please let me know how to replace all Nan and infl values with zero here?有人可以让我知道如何在这里用零替换所有 Nan 和 infl 值吗?

Data output is coming out as: X is 0 NaN 1 0.000000 2 0.000000 3 -0.583996 4 -0.663946 ...数据输出如下: X 是 0 NaN 1 0.000000 2 0.000000 3 -0.583996 4 -0.663946 ...
217 -0.370332 218 -0.671487 219 -0.432080 220 -0.355075 221 -0.899898 Name: X_MngFut, Length: 222, dtype: float64 217 -0.370332 218 -0.671487 219 -0.432080 220 -0.355075 221 -0.899898 名称:X_MngFut,长度:222,dtype:float64

HWM is 0 0.000000 1 0.000000 2 0.000000 3 0.000000 4 0.000000 ... HWM 是 0 0.000000 1 0.000000 2 0.000000 3 0.000000 4 0.000000 ...
217 0.094699 218 0.094699 219 0.094699 220 0.094699 221 0.094699 Name: ContrlMngFut_Return, Length: 222, dtype: float64 217 0.094699 218 0.094699 219 0.094699 220 0.094699 221 0.094699 名称:ContrlMngFut_Return,长度:222,dtype:float64

DD is 0 NaN 1 NaN 2 NaN 3 inf 4 inf ... DD 是 0 NaN 1 NaN 2 NaN 3 inf 4 inf ...
217 1.047079 218 0.789772 219 1.019615 220 1.088973 221 0.661590 Name: ContrlMngFut_Return, Length: 222, dtype: float64 217 1.047079 218 0.789772 219 1.019615 220 1.088973 221 0.661590 名称:ContrlMngFut_Return,长度:222,dtype:float64

MDD is 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN .. 217 NaN 218 NaN 219 NaN 220 NaN 221 NaN MDD 是 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN .. 217 NaN 218 NaN 219 NaN 220 NaN 221 NaN

Any help is greatly appreciated.任何帮助是极大的赞赏。 Thanks谢谢

when you are using fillna(), it does not do inplace replacement.当您使用 fillna() 时,它不会进行就地替换。 so set the inplace parameter to True.所以将 inplace 参数设置为 True。

DD_CntrMngFut.fillna(0,inplace=True)

Hope this will work!希望这会奏效!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM