我对编码还不熟悉,刚看完一段关于pickle函数的视频。我想使用pickle数据作为一个浮点数,我可以将它输入到我的代码中,但是它抛出了下面列出的一个错误
我的代码:
dataFF = fred.get_series_latest_release("CPIAUCSL")
x = (dataFF.tail(1))
dataXX = fred.get_series_latest_release("STLPPM")
y = (dataXX.tail(1))
if float(x)<=0:
pickle.dump(y,open("fred.dot","wb"))
e = pickle.load(open("fred.dot","rb"))-5
if y<=e:
print("hi")
我的错误:
Traceback (most recent call last):
File "C:/Users/sc/PycharmProjects/fred project/main.py", line 78, in <module>
if y<=e::
File "C:\Users\sc\Desktop\vfred\lib\site-packages\pandas\core\generic.py", line 1537, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
从注释中查看您正在使用的包,您可以看到}
fred.get_series_latest_release()
{a1}是一个pandas
{查看
pandas
{a2}forSeries.tail()
,您可以看到它返回最后n行,也是类型pandas.Series
。您可以在调用后立即检查此print(type(x))
或print(type(y))
由于
Series
可以包含任意数量的行,因此对一个行调用float
没有多大意义,但是,如果Series
的长度为1,那么pandas
会尝试做正确的事情并将其转换为here有一件事是
pandas
不允许在Series
之间进行比较。这就是错误的根源这里
在比较之前,您做了正确的事情并将长度为1的
Series
转换为float
然而,在这里
对于
y
,您无法执行相同的操作。 所以如果你要这么做它应该能解决你的问题
但是真正的罪魁祸首是在你需要一个{}的时候带着一个{}到处走动。
更好的方法是立即转换为
float
这样,您的比较就可以工作,而不必担心每次转换
相关问题 更多 >
编程相关推荐