gpt4 book ai didi

python - ValueError:系列的真值不明确(API NaN 处理)

转载 作者:行者123 更新时间:2023-12-01 00:39:32 25 4
gpt4 key购买 nike

我正在 django-rest-framework 中开发一个 API,根据您的输入参数,您会得到不同的响应。API 正在计算将根据数据库返回给用户的指标。

我编写了一个函数来处理 NaN 值,如下所示:

def nan_to_none(value):
if not isinstance(value, str) and value is not None and np.isnan(value):
return None
return value

这是弹出错误的响应元素:

 "prog": nan_to_none(row["average_items_prog"])

这是引发问题的 SQL 行:

  ((((coalesce(qte_art, 0) / nullif(nb_client, 0)) - (coalesce(qte_art_n1, 0) / nullif(nb_client_n1, 0))) / (coalesce(qte_art_n1, 0) / nullif(nb_client_n1, 0))) * 100) as average_items_prog,

这是错误消息:

  File "C:\Users\wdc\views.py", line 464, in get
"prog": nan_to_none(row["average_items_prog"])},
File "C:\Users\wdc\views.py", line 28, in nan_to_none
if not isinstance(value, str) and value is not None and np.isnan(value):
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 1478, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我不知道如何解决这个问题!

最佳答案

尝试改变:

"prog": nan_to_none(row["average_items_prog"])

Series.apply :

"prog": row["average_items_prog"].apply(nan_to_none)

测试:

s = pd.Series(['a', 0, 0, 1, None, np.nan])
print (s)
0 a
1 0
2 0
3 1
4 None
5 NaN
dtype: object

def nan_to_none(value):
if not isinstance(value, str) and value is not None and np.isnan(value):
return None
return value

print (s.apply(nan_to_none))
#in your solution
#"prog": row["average_items_prog"].apply(nan_to_none)
0 a
1 0
2 0
3 1
4 None
5 None
dtype: object

似乎解决方案应该通过测试来简化 np.nan != np.nan:

def nan_to_none(value):
if value != value:
return None
return value

print (s.apply(nan_to_none))
#in your solution
#"prog": row["average_items_prog"].apply(nan_to_none)
0 a
1 0
2 0
3 1
4 None
5 None
dtype: object

或者设置NoneSeries.mask :

print (s.mask(s.isna(), None))
#in your solution
#"prog": row["average_items_prog"].mask(s.isna(), None)
0 a
1 0
2 0
3 1
4 None
5 None
dtype: object

关于python - ValueError:系列的真值不明确(API NaN 处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com