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

macOS Numbers导出CSV在Google Colab读取时触发id列键错误

问题排查与解决方法

按优先级逐个排查即可,都是Numbers+Colab读数据的常见坑:

  • 首先修正基础代码错误
    你贴的代码缺了pandas导入语句,而且存在明显的方法/文件格式不匹配问题:pd.read_csv()仅能读取纯文本分隔的CSV文件,你传入的文件名是Book 1.xlsx(Excel二进制格式),这一步本身就会读取异常。
    如果你导出的是CSV文件,先把文件后缀改成.csv,补上导入语句,先加一行打印列名的代码做校验,不要直接取id字段:
    import pandas as pd
    from google.colab import files
    file = files.upload()
    
    # 注意文件名要和files.upload()输出区显示的实际上传文件名完全一致,包括空格、后缀、大小写
    df = pd.read_csv('Book 1.csv')
    print(df.columns.tolist()) # 打印所有实际读到的列名,定位列名不匹配问题
    df.head(10)
    
    如果你确实要读取xlsx格式文件,把读取语句换成df = pd.read_excel('Book 1.xlsx')即可。
  • 解决Numbers导出CSV的BOM头问题
    这是Mac版Numbers最容易踩的坑:默认导出的CSV会带UTF-8 BOM不可见字符,这个字符会直接拼在第一列的列名开头,你肉眼看到第一列表头是id,但pandas实际识别到的列名是\ufeffid,自然会触发KeyError。读文件时指定编码自动过滤BOM即可解决:
    df = pd.read_csv('Book 1.csv', encoding='utf-8-sig')
    
  • 清理列名的隐形空白
    如果你是复制粘贴内容到Numbers生成的表格,很容易在表头单元格里带入尾随空格、换行等不可见空白,也会导致列名匹配失败。读到数据后先统一清理所有列名的首尾空白即可:
    df.columns = df.columns.str.strip()
    
  • 导出设置调整(可选)
    也可以直接在Numbers导出环节规避问题:导出CSV时取消勾选「包含表名」选项,编码选择「UTF-8」(不要选带BOM的选项)后再导出上传即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:15:41