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

时间:2018-05-14 14:41:57

标签: python pandas

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

CODE -

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))   

错误 -

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

.txt文件

enter image description here

5 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:0)

如果您正在读取刚创建的csv,也会出现此错误。解决方案是尝试创建另一个线程,该线程将调用另一个函数来读取csv并执行其他操作。当您必须将多个csv文件合并到一个Excel文件中时,以下代码将起作用

t4= threading.Thread(function_name)
t4.start()
def function_name():
   lock.acquire()
   writi = ExcelWriter('./Final.xlsx')                                                               
   stock = glob.glob("./*.csv")                                                                                           
   df_file = (pd.read_csv(g) for g in stock)
  for inn, di in enumerate(df_file):
     di.to_excel(writi, sheet_name='view{}.csv'.format(inn)
  writi.save()
  lock.release()

答案 2 :(得分:0)

您是否要在关闭文件之前先读取文件?

f = open(filename, 'w')
#some code
pd.read_csv(filename)

将导致上述错误。在尝试读取文件之前,请确保您f.close()

更正的代码:

f = open(filename, 'w')
#some code
f.close()
pd.read_csv(filename)

答案 3 :(得分:0)

我的文件夹路径中有空文件。

答案 4 :(得分:-2)

如果您尝试将.txt文件读入Pandas Dataframe,则需要使用sep =“”标记。

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

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

df = pd.read_csv('output_list.txt', sep=" ", header=None)