You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

逐行读取文件生成DataFrame时int()与int(float())的区别及转换报错处理

问题修复方案

错误根因

  • 语法缩进错误:Python对缩进敏感,你代码中函数内部的with open逻辑、with代码块下的内容都没有正确缩进,导致读取逻辑完全异常,没有将每行按制表符分割成单个数字字符串,直接把整行带\t的长字符串传入类型转换函数,触发报错。
  • 文件名拼写混乱:代码中出现winsonsin labels.txt/wisconson.txt等多个拼写错误的文件名,和实际文件名称不匹配,会触发文件读取失败或读取错误内容。
  • 函数参数未生效:readLabels函数定义了fileName传参,但内部写死了文件路径,传入的参数不会生效。
  • DataFrame构造错误:pd.DataFrame(data , labels)的第二个参数默认是行索引,你需要显式指定columns=labels才能将标签设置为列名,否则数据结构完全不符合预期。

修复后可运行代码

import pandas as pd
import plotly.express as px

def readLabels(fileName):
    # 修正缩进,使用传入的fileName参数
    with open(fileName, encoding='utf-8') as f:
        labels = f.read().strip().split(',')
        # 如果需要使用中文标签,可以替换为下一行代码
        # labels = ["半径","纹理","周长","面积","平滑度","致密性","凹度","凹点","对称性","分类"]
        return labels

def readData(fileName, labels):
    # 修正缩进
    with open(fileName, 'r', encoding='utf-8') as f:
        lines = f.readlines()
        # 先过滤空行,再按空白字符分割,转int
        data = [[int(num) for num in line.strip().split()] for line in lines if line.strip()]
        # 修正DataFrame传参,指定columns为labels
        dataFrame = pd.DataFrame(data, columns=labels)
        return dataFrame

def graph(data, labels):
    # 修正缩进
    figure = px.parallel_coordinates(data_frame = data,
                                     color= 'class',
                                     dimensions = labels[:-1])
    figure.show()

# 修正文件名拼写,和实际文件一致
labels = readLabels("wisconsin labels.txt")
data = readData("wisconsin.txt", labels )
graph(data, labels)

标签中文翻译

原标签对应的中文含义如下,可直接替换代码中的标签使用:

  • 原标签:radius、texture、perimeter、area、smoothness、compactness、concavity、concave_points、symmetry、class
  • 中文标签:半径、纹理、周长、面积、平滑度、致密性、凹度、凹点、对称性、分类
int() 与 int(float()) 类型转换的区别
  • int(输入值):要求输入必须是符合十进制整数规范的字符串或数值,输入为带小数点的字符串(如'3.0'、'5.9')、科学计数法字符串、空白字符时,会直接抛出转换错误,适合明确输入为纯整数字符串的场景。
  • int(float(输入值)):会先将输入转换为浮点数,再截断小数部分转成整数,兼容带小数点的整数字符串、科学计数法表示的整数,但输入非数字字符串时仍会报错,且如果输入是带小数的非整数字符串(如'5.9')会直接截断为5,不会做四舍五入。

你的场景中所有数据都是整数,只要正确分割每行的数值,直接用int()转换即可,不需要走int(float())的逻辑。

内容的提问来源于stack exchange,提问作者Orianna Sanele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:24:01