首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataClass删除inf值

DataClass删除inf值
EN

Stack Overflow用户
提问于 2021-09-13 11:51:12
回答 1查看 42关注 0票数 1

我有一个数据类

代码语言:javascript
复制
from dataclasses import dataclass

@dataclass
class ModelResult:
    scorecard_calcs: dict

然后在Model类中使用这个

代码语言:javascript
复制
import pandas as pd
import numpy as np

class Model:
    def predict(self, input):
        scorecard_calcs = pd.DataFrame([{'val':np.inf}, {'val':-np.inf}]).to_dict()
        return ModelResult(scorecard_calcs=scorecard_calcs)

在其他地方,这将被转换为json,但是inf不是有效的json。

如何更改ModelResult 1.7976931348623157e+308 数据集,从而自动将inf值替换为有效的json. 1.7976931348623157e+308

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-14 05:46:30

下面是我如何按照@balderman的建议使用__post_init__来实现的

代码语言:javascript
复制
from dataclasses import dataclass
import numpy as np

ALMOST_INF = 1.7976931348623157e308

@dataclass
class ModelResult:
    scorecard_calcs: dict
    pd: float

    @staticmethod
    def replace_inf(val):
        if not isinstance(val, (int, float, complex)):
            return val

        if np.isposinf(val):
            return ALMOST_INF

        if np.isneginf(val):
            return -ALMOST_INF

        return val

    def __post_init__(self):
        self.pd = self.replace_inf(self.pd)

        scorecard_calcs = pd.DataFrame(self.scorecard_calcs)
        scorecard_calcs = scorecard_calcs.applymap(self.replace_inf)
        self.scorecard_calcs = scorecard_calcs.to_dict()

这是可行的,因为我知道一个事实,scorecard_calcs是一个垃圾,以前是熊猫的数据框架。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69162157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档