Python ValueError:无法将字符串转换为浮点:';HH#u收入';

Python ValueError:无法将字符串转换为浮点:';HH#u收入';,python,flask,Python,Flask,我想将传入的数据转换为excel文件中的浮动,我不知道如何做,如果有人能帮助我,我将非常感激 with open(file_path, "rt") as csv_file: content = csv.reader(csv_file) for row in content: values = [] for column in row: values.append({'number_va

我想将传入的数据转换为excel文件中的浮动,我不知道如何做,如果有人能帮助我,我将非常感激

with open(file_path, "rt") as csv_file:
        content = csv.reader(csv_file)
        for row in content:
            values = []
            for column in row:
                values.append({'number_value': float(column)})
            payload = {
                'row': {'values': values}
            }

            response = prediction_client.predict(model_full_id, payload)
            print("Prediction results:")
            for result in response.payload:
                print("Predicted class name: {}".format(result.display_name))
                print("Predicted class score: {}".format(result.classification.score))

有一些数据是字符串格式的,请问如何将字符串格式的数据转换为浮点格式?

我不确定CSV文件的数据格式是什么,也不确定加载数据后您想对其执行什么操作。然而,您的问题是如何“将传入数据转换为excel文件中的浮点”

一种简单的方法是使用
pandas
模块读取CSV文件,并将其中的数据类型转换为新的数据帧

您可以使用
read\u csv
方法中的
dtype
参数来更改正在读取的列的数据类型,例如,将整数值读取为浮点值。请看一下文档

对于上面的代码,您可以尝试以下操作(将“filename.csv”替换为您的文件名,将“column\u name\u”值替换为csv中的值):

可以指定要作为浮点类型导入的列。我们可以通过检查每列的数据类型来确认情况:

print(df.dtypes)
这将显示如下内容:

column_name_1    float64
column_name_2    float64
dtype: object

然后可以使用
iterrows()
函数迭代新数据帧中的行。您可以参考此链接以获取有关使用此项的帮助:

您可以将生成异常的代码部分包含在try块中:

with open(file_path, "rt") as csv_file:
    content = csv.reader(csv_file)
    for row in content:
        values = []
        for column in row:
            try:
                values.append({'number_value': float(column)})
            except ValueError:
                values.append({'number_value': column})
        payload = {
            'row': {'values': values}
        }

        response = prediction_client.predict(model_full_id, payload)
        print("Prediction results:")
        for result in response.payload:
            print("Predicted class name: {}".format(result.display_name))
            print("Predicted class score: {}".format(result.classification.score))

csv文件中的第一行通常包含列名,而不是值。从第二行开始。是的,你是对的,但之后它会显示这个错误,因为我有一个字符串格式的列,比如'RENTER',错误是'ValueError:无法将字符串转换为float:'RENTER',它仍然无法将字符串转换为float,事实上我想对所有列执行此操作,所有列都应该是float,它再次向我显示了这一点==>无法将google.protobuf.Value.number\u值设置为“RENTER”:“RENTER”具有类型,但字段Value.number\u值应为以下类型之一:(,)您可以添加一个csv文件整行/整列的示例吗?如果可能的话,在您的终端中进行整个回溯。--这是其中一行==>30000,RENTER,German,N,1,25-29,German,1 3RD PL UNIT 703,CA,LONG BEACH,LOS ANGELES,90802,7.00-7.99,7Day,FM,0,CircAdm-这是错误==>TypeError:无法将google.protobuf.Value.number_值设置为“RENTER”:“RENTER”具有类型,但应为以下类型之一:(,)对于字段Value.number\u Value,我不是专家,您向我们提供了很少的细节来帮助我们了解问题。但据我所知,我看到你使用谷歌的协议缓冲区。在本例中,您尝试将字符串值(
RENTER
)分配给需要浮点值的属性
google.protobuf.value.number\u值
。所以,试着分析你的代码,看看如何协调你的价值观​​具有定义的属性。
with open(file_path, "rt") as csv_file:
    content = csv.reader(csv_file)
    for row in content:
        values = []
        for column in row:
            try:
                values.append({'number_value': float(column)})
            except ValueError:
                values.append({'number_value': column})
        payload = {
            'row': {'values': values}
        }

        response = prediction_client.predict(model_full_id, payload)
        print("Prediction results:")
        for result in response.payload:
            print("Predicted class name: {}".format(result.display_name))
            print("Predicted class score: {}".format(result.classification.score))