pandas.errors.EmptyDataError:没有要从文件中解析的列

ubu*_*oob 2 python pandas

我创建了一个列表数据类型,其中包含三个文件夹的路径,其中每个文件夹都有很多 .txt 文件。我试图通过将文件夹中的每个文件设置为熊猫数据框来处理文件夹中的每个文件,但我收到了列出的错误。

代码-

for l in list: 
    for root, dirs, files in os.walk(l, topdown=False):
        for name in files:
            #print(os.path.join(root, name))

            df = pd.read_csv(os.path.join(root, name))   
Run Code Online (Sandbox Code Playgroud)

错误-

Traceback (most recent call last):
      File "feature_drebin.py", line 18, in <module>
        df = pd.read_csv(os.path.join(root, name))
      File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 709, in parser_f
        return _read(filepath_or_buffer, kwds)
      File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 449, in _read
        parser = TextFileReader(filepath_or_buffer, **kwds)
      File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 818, in __init__
        self._make_engine(self.engine)
      File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 1049, in _make_engine
        self._engine = CParserWrapper(self.f, **self.options)
      File "E:\anaconda\lib\site-packages\pandas\io\parsers.py", line 1695, in __init__
        self._reader = parsers.TextReader(src, **kwds)
      File "pandas/_libs/parsers.pyx", line 565, in pandas._libs.parsers.TextReader.__cinit__
    pandas.errors.EmptyDataError: No columns to parse from file
Run Code Online (Sandbox Code Playgroud)

.txt 文件

在此处输入图片说明

小智 5

我遇到了同样的问题,答案在上面:“如果您正在阅读刚刚创建的 csv,也会出现此错误”

我在我无法控制的其他地方创建了一个垃圾 csv 文件。该文件以两行无意义(至少对我没用)、两行空行开头,然后是带有短语而不是单词的列标题的数据。即列标题每个都有多个带有空格的单词。对于任何有数据背景的人来说,这是一个很大的问题。如果您的列标题中有空格,那么您就是在问问题;总是使用单个词。

我对这个 csv 的计划是打开它,删除前五行并将剩余的行写入一个新创建的 csv,我已经在其中写入了新的标题行。问题是,当我尝试打开数据框时,pandas 抛出了“空数据错误”。

对源文件和目标文件的检查表明它们是完美的,可以在记事本或 Excel 中打开,我能找到的所有答案都涉及检查文件路径、分隔符、编码等。

在我看来,python 并没有遵循我们的逐行指令,而是在早期指令尚未完成时开始执行其他操作——多任务处理。为了证明我的观点,我注释掉了写入新文件的行(它已经在上一次运行中创建了)并且 df 完美地出现了。


小智 -3

如果您尝试将 .txt 文件读入 Pandas Dataframe,则需要有 sep = " " 标签。

这将告诉 Pandas 使用空格作为分隔符而不是标准逗号。

此外,如果您从文本文件导入并且数据中没有列名称,则应该传递 header=None 属性。那么你的定义将如下所示:

df = pd.read_csv('output_list.txt', sep=" ", header=None)
Run Code Online (Sandbox Code Playgroud)