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

pd.read_csv读取tips.csv后dtypes仅返回int64,如何获取各列正确数据类型

问题原因
  • CSV读取分隔符配置错误:pd.read_csv默认使用逗号作为分隔符,若上传的文件实际分隔符不匹配、或文件内容格式被篡改,所有列会被合并为单列,自然仅返回一个数据类型。
  • df变量被意外覆盖:读取数据后运行的其他代码可能将df重新赋值为Series、单个数值等非DataFrame对象,此时调用.dtypes只会返回单个类型结果。
  • 文件头部存在异常内容:CSV开头存在多余空行、注释行,或表头缺失时,pd.read_csv会将第一行数据识别为表头,导致内容解析错位,最终得到单列表格。
  • 上传文件内容损坏:文件上传过程中出现丢包、截断,仅部分整数内容被正常读取,最终生成单列整数类型的DataFrame。
解决方法

按优先级逐一排查:

  1. 确认df实际结构:
    执行以下代码查看结构:
    print(df.shape)
    print(type(df))
    print(df.head())
    
    若输出行列数为(N, 1)说明是文件解析问题;若type(df)结果不是pandas.core.frame.DataFrame说明变量已被覆盖。
  2. 变量覆盖问题处理:
    重新单独运行df = pd.read_csv('tips.csv')代码块,运行后立刻执行df.dtypes,期间不要运行其他修改df的代码,确认是否返回正常的多列类型结果。
  3. 单列表解析问题处理:
    调整读取参数,适配文件格式:
    # 明确指定分隔符、表头行位置
    df = pd.read_csv('tips.csv', sep=',', header=0)
    # 分隔符不明确时尝试自动适配
    df = pd.read_csv('tips.csv', sep=r'\s+|,', engine='python')
    
  4. 文件完整性校验:
    重新上传原始CSV文件,上传后先校验文本格式:
    with open('tips.csv', 'r') as f:
        # 打印第一行确认表头是否正常
        print(f.readline())
    
    正常表头应为total_bill,tip,sex,smoker,day,time,size,若输出异常说明文件内容损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:45:02