python - 如何在一系列值中用 0 替换 Nan 和 Inf 值
问题描述
我正在对一系列数据和变量进行一些计算,并得到一些 Nan 值和 Infl 值。我试图用零替换这些
我曾尝试使用 .fillna(0),但似乎没有对结果进行任何更改..
这是我的代码:
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])
有人可以让我知道如何在这里用零替换所有 Nan 和 infl 值吗?
数据输出如下: X is 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 长度:22 X_ngFut 6M
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 221 221 0.094699名称:Contrlmngfut_return,长度:222,Dype:222,Dtype:foolat644
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 名称:ContrlMngFut_Return,长度:222,dtype:float64
MDD 为 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN .. 217 NaN 218 NaN 219 NaN 220 NaN 221 NaN
任何帮助是极大的赞赏。谢谢
解决方案
当您使用 fillna() 时,它不会进行就地替换。所以将inplace参数设置为True。
DD_CntrMngFut.fillna(0,inplace=True)
希望这会奏效!
推荐阅读
- javascript - 卸载组件时中止嵌套的获取请求
- c - QuickSort 实现不适用于重复键
- python-3.x - 如何循环所有表并在 SQLite 中收集数据?
- node.js - 从服务器下载文件但仍然出现错误“无法获取”并且没有进入 fetch.then 函数
- html - 如果我们将链接设置为“initial”,为什么链接的颜色为黑色,否则为蓝色?
- laravel - Laravel - 通过 with 的项目计数属于
- javascript - Gulp 管道创建文件并使用这些文件
- javascript - ReduxForm Field 组件不适用于列 Headers 中的 ReactTable Cell 属性
- javascript - 从嵌套对象中删除某些对象的最佳方法是什么?
- html - 如何设置
- 垂直?