python - for循环期间的Python标量值错误
问题描述
我得到了如下的熊猫数据框:
如果它不是PLN,我想转换货币。为此,我编写了代码:
def convert_currency():
lst = []
for i in risk['AMOUNT']:
if risk['CURRENCY'].item() == 'EUR':
lst.append(i * eurpln['EURPLN'][0])
elif risk['CURRENCY'].item() == 'USD':
lst.append(i * usdpln['USDPLN'][0])
elif risk['CURRENCY'].item() == 'CHF':
lst.append(i * chfpln['CHFPLN'][0])
elif risk['CURRENCY'].item() == 'GBP':
lst.append(i * gbppln['GBPPLN'][0])
else:
lst.append(i)
return lst
但就在我试图运行这个函数之后,我得到了值错误:
----> 4 if risk['CURRENCY'].item() == 'EUR':
ValueError:只能将大小为 1 的数组转换为 Python 标量
你能帮我找出这个问题的原因以及解决方案吗?
解决方案
这里不需要循环。
对于字典的性能使用map
,然后按AMOUNT
列进行多个:
d = {'EUR':eurpln['EURPLN'][0], 'USD': usdpln['USDPLN'][0],
'CHF':chfpln['CHFPLN'][0], 'GBP': gbppln['GBPPLN'][0]}
risk['AMOUNT'] = risk['CURRENCY'].map(d).mul(risk['AMOUNT'], fill_value=1)
推荐阅读
- delphi - FireMonkey FlowLayout 不刷新基于可见属性的项目
- javascript - 禁用按钮无法正常工作。文本已删除,但按钮仍处于启用状态
- c++ - 函数可以返回类型吗?
- node.js - Cloud Run 使用套接字连接到云 SQL(postgres)连接超时问题
- python - Python图形算法问题,我的代码有什么问题?
- laravel-7 - 将数据插入数据库,但使用 Laravel 7 将其显示为列表
- python - 如何检查数据框的所有列是否相同?
- python - 是否可以使用命令行选项减少/消除系统级代码的 MyPy 错误?
- arrays - 尝试访问 C 中大数组中的元素时出现分段错误
- python - 使用 Kudu 在 Azure 上部署 Flask - 仅显示默认页面