python - Python 错误:ValueError:只能将大小为 1 的数组转换为 Python 标量
问题描述
我有一个数据框,它从 json 中选择最低价格和卖家。但是有时我会收到此错误:ValueError: can only convert an array of size 1 to a Python scalar
它有时会发生,但并非总是如此。
这是代码..
import pandas
Data= []
Data+=[{"A": "X1FFFFF", "Special":{"type": "USD"},"B": "0.11",}]
Data+=[{"A": "X2FFFFF", "Special":{"type": "EUR"},"B": "0.122",}]
Data+=[{"A": "X3FFFFF", "Special":{"type": "EUR"},"B": "0.1444",}]
Data = pandas.DataFrame(Data)
Data = Data.astype({"B": float})
Data = Data.astype({"A": str})
euro_rows = Data.loc[Data["Special"] == {'type': 'EUR'}]
lowest_price = euro_rows.loc[euro_rows['B'] == euro_rows['B'].min()]
seller = lowest_price['A'].item()
price = lowest_price['B'].item()
print(seller)
print(price)
我能做些什么来解决这个错误?
完全错误:
File "Fuck.py", line 50, in GetLowestPriceAndSeller
seller = lowest_price['seller'].item()
File "/usr/local/lib/python3.8/site-packages/pandas/core/base.py", line 420, in item
raise ValueError("can only convert an array of size 1 to a Python scalar")
ValueError: can only convert an array of size 1 to a Python scalar
解决方案
我的猜测是,您在最低价格中有几个项目,如果它们的成本完全相同,这可能是可能的,这也可以解释为什么它只是有时会发生。
所以罪魁祸首可能是对 .item() 的调用,它需要一个项目,但你有一个数组。
然后,您可以简单地获取整个最低价格数组,而不仅仅是项目。这在一定程度上取决于您究竟想对数据做什么,因为在我看来,情况与您最初的情况有所不同。
推荐阅读
- c++ - 如何将 OpenGL 渲染到半透明的 Win32 窗口?
- rust - 有没有一种 Rust 方法可以在尝试读取 STDIN 缓冲区之前检查它是否为空?
- clojure - Clojure 中“interpose”函数的奇怪行为
- javascript - 如何使用 JSON 通过输入创建和修改数据?
- python - 为数据框中的每一行创建平均值
- kotlin - Kotlin:从对列表而不是可变参数创建可变映射?
- react-portal - 在 react-portal v4 中未出现 openByClickOn 按钮
- mongodb - 如何在 $lookup 聚合 Mongodb 中使用 let
- reactjs - 重置表单但从中保存一个值
- python - 如何使用python对不同excel文件中的数字求和?