【问题标题】:ValueError when running Python function in data pipeline在数据管道中运行 Python 函数时出现 ValueError
【发布时间】:2023-01-02 00:33:07
【问题描述】:

我正在使用 Python 构建数据管道,但在尝试执行某个函数时遇到了问题。我收到的错误消息是:ValueError: Could not convert string to float: 'N/A'

这是有问题的功能:

def process_data(data):
    for item in data:
        # Do some processing...
        value = float(item[1])
        if value > 0:
            processed_item = process_item(item)
            yield processed_item

我正在这样调用函数:

data = [('A', '1.5'), ('B', '2.7'), ('C', 'N/A'), ('D', '4.1'), ('E', '5.9')]
processed_data = process_data(data)

代码:

def process_data(data):
    for item in data:
        # Do some processing...
        value = float(item[1])
        if value > 0:
            processed_item = process_item(item)
            yield processed_item

data = [('A', '1.5'), ('B', '2.7'), ('C', 'N/A'), ('D', '4.1'), ('E', '5.9')]
processed_data = process_data(data)

错误信息:

ValueError: Could not convert string to float: 'N/A'

预期结果是处理数据列表中的项目,如果项目的值大于 0,则返回处理后的项目。

【问题讨论】:

  • 在这种情况下,您预计会发生什么?像这样的字符串不代表数字。您需要以适合您的任务的方式手动处理这种特殊情况。有关如何捕获它们的一些一般信息,您可以查找 try..catch 和类型转换。
  • 你能具体说明你的问题是什么吗?

标签: python linux amazon-web-services data-pipeline


【解决方案1】:

float(parameter) 的参数值必须是数字或可以转为浮点数的字符串。

无法转换值“N/A”,因为它不是数字。

你可以试试:

try:
    value = float(item[1])
except ValueError:
    value = 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2021-08-04
    • 2018-05-22
    相关资源
    最近更新 更多