我有一个数据类
from dataclasses import dataclass
@dataclass
class ModelResult:
scorecard_calcs: dict然后在Model类中使用这个
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。
发布于 2021-09-14 05:46:30
下面是我如何按照@balderman的建议使用__post_init__来实现的
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是一个垃圾,以前是熊猫的数据框架。
https://stackoverflow.com/questions/69162157
复制相似问题