Чтобы выполнить первый шаг, я составил список файлов csv DictWriter, по одному для каждого небольшого файла, на который я хочу разделить основной файл, чтобы случайным образом назначить каждую строку основного файла одному из файлов DictWriter. Вот фиктивный пример, иллюстрирующий идею первого шага, но для синтетически созданного файла CSV, который выдает ту же ошибку:
Код: Выделить всё
import pandas as pd
import random
import numpy as np
import csv
import os
#First, creating a dummy file just containing integers 0-19 over 2 columns.
data=pd.DataFrame({'col1':list(range(10)),'col2':list(range(10,20))})
data.to_csv('test_file.csv',index=False)
n_chunks=2 #For this example I only split the dummy file into two smaller files
#Next, make a list of DictWriter objects, one for each smaller file
file_names=[f"test_batch_{batch_no}.csv" for batch_no in list(range(n_chunks))]
chunks=[csv.DictWriter(open(file_name,'w'),["col1","col2"]) for file_name in file_names]
#Make headers for each smaller file
for chunk in chunks:
chunk.writeheader()
#Now, randomly assign each line in test_file.csv to one of the smaller files.
with open("test_file.csv",newline='') as data:
reader=csv.DictReader(data)
for line in reader:
i=random.randint(0,n_chunks-1)
chunks[i].writerow(line)
for file_name in file_names:
#The next line gives the error.
chunk=pd.read_csv(file_name)
Я пытался изменить параметры новой строки для команд «открыть», так как я нашел в В предыдущих сообщениях говорилось, что ошибка «Нет столбцов для анализа файла формы» иногда возникает из-за неправильных символов новой строки, но безрезультатно.
Для полноты приведем полный путь к ошибке:
Код: Выделить всё
Traceback (most recent call last):
File "[...]/main.py", line 29, in
chunk=pd.read_csv(file_name)
^^^^^^^^^^^^^^^^^^^^^^
File "[...]/.venv/lib/python3.12/site-packages/pandas/io/parsers/readers.py", line 1026, in read_csv
return _read(filepath_or_buffer, kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[...]/.venv/lib/python3.12/site-packages/pandas/io/parsers/readers.py", line 620, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[...]/.venv/lib/python3.12/site-packages/pandas/io/parsers/readers.py", line 1620, in __init__
self._engine = self._make_engine(f, self.engine)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[...]/.venv/lib/python3.12/site-packages/pandas/io/parsers/readers.py", line 1898, in _make_engine
return mapping[engine](f, **self.options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[...].venv/lib/python3.12/site-packages/pandas/io/parsers/c_parser_wrapper.py", line 93, in __init__
self._reader = parsers.TextReader(src, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "parsers.pyx", line 581, in pandas._libs.parsers.TextReader.__cinit__
pandas.errors.EmptyDataError: No columns to parse from file
Подробнее здесь: https://stackoverflow.com/questions/791 ... aller-csvs