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

Pandas读取CSV文件返回Empty DataFrame但文件实际非空的问题排查求助

为什么Pandas读取非空CSV却返回空DataFrame?

从你给出的输出来看,Pandas读取后得到了一个有400列但0行的空DataFrame,而且列名都是类似0、0.1、0.2这样的数值——这大概率是读取时的表头识别逻辑或者分隔符设置出了问题,下面给你几个最可能的原因和解决办法:

1. 第一行数据被误当成了列名

如果你的CSV文件没有专门的表头行,第一行就是实际数据,Pandas默认会把第一行当作列名,导致后续没有数据行被读取(如果你的文件只有这一行数据的话,就会出现0行400列的情况)。

解决办法:读取时指定header=None,告诉Pandas不要把第一行当表头,而是把它当作数据行:

import numpy as np
import pandas as pd
sn1 = pd.read_csv('myFile.csv', header=None)
if sn1.empty:
    print("empty")
print(sn1)

2. 分隔符不匹配

CSV默认用逗号,分隔,但你的文件可能用了其他分隔符(比如制表符\t、分号;、空格等),Pandas按逗号读取时会把整行内容拆成不符合预期的列,甚至导致数据行无法被识别。

解决办法:

  • 如果你知道分隔符,直接指定sep参数:
    # 制表符分隔的文件
    sn1 = pd.read_csv('myFile.csv', sep='\t')
    # 分号分隔的文件
    sn1 = pd.read_csv('myFile.csv', sep=';')
    
  • 如果你不确定分隔符,可以让Pandas自动检测:
    sn1 = pd.read_csv('myFile.csv', sep=None, engine='python')
    

3. 先确认文件的实际内容

如果上面的方法都没用,建议先直接读取文件内容,看看实际的格式是什么样的,方便排查问题:

with open('myFile.csv', 'r', encoding='utf-8') as f:
    print(f.read())

这样你就能看到文件里的真实内容,判断是分隔符不对,还是有其他格式问题(比如空行、特殊字符等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:44:05