我创建了一个列表数据类型,其中包含三个文件夹的路径,其中每个文件夹都有很多.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文件
答案 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)