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

pandas读取csv文件时如何将列名识别为整数类型

问题原因

CSV属于纯文本格式,本身不存储任何数据类型元信息。使用pd.to_csv()写入时,整数类型的列名会被自动转为字符串存储,pd.read_csv()读取时自然默认将列名识别为字符串类型,pandas目前没有提供直接在read_csv阶段指定列名类型的参数,可通过以下两种方案解决:

解决方案

  • 方案1:读取后手动转换列名类型
    适配必须使用CSV格式的场景,读取完成后新增一行代码转换列名类型即可:

    import pandas as pd
    
    df = pd.DataFrame(index=pd.MultiIndex.from_arrays([[], []]))
    for row_ind1 in range(3):
        for row_ind2 in range(3, 6):
            for col in range(6, 9):
                entry = row_ind1 * row_ind2 * col
                df.loc[(row_ind1, row_ind2), col] = entry
    
    df.to_csv("df.csv")
    
    dfr = pd.read_csv("df.csv", index_col=[0, 1])
    # 新增行:将列名转为整数类型
    dfr.columns = dfr.columns.astype(int)
    print(dfr.loc[(0, 3), 6])       # 正常输出0,无KeyError
    
  • 方案2:使用支持保留元数据的序列化格式
    如果不需要导出人类可读的CSV文件,直接使用pickle格式存储,所有索引结构、列名类型、数据类型都会完整保留,无需额外转换:

    # 写入文件
    df.to_pickle("df.pkl")
    # 读取文件
    dfr = pd.read_pickle("df.pkl")
    print(dfr.loc[(0, 3), 6]) # 直接正常运行
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:03