Как дозаписать информацию в CSV через Pandas?
Всем привет. Нужно дозаписывать информацию в CSV-файл через PD, но у меня при таком коде
def save(self, path):
fileWrite = open(*path*, 'a', encoding='UTF-8')
data = pandas.DataFrame([
[self.data['matchDate'], self.data['names']['home']
[self.data['matchDate'], self.data['names']['away']
], columns=['Дата', 'Команды')
data.to_csv(*fileWrite*, index=False, sep=';')
получается следующее:
Данная функция вызывается в цикле для каждого элемента:
for item in matchList:
item.save(path)
Как убрать пробелы между строками, и заголовки оставить только на 1 строке?
Ответы (1 шт):
Почему появляются пустые строки?
Смотрим документацию по методу to_csv:
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.', errors='strict', storage_options=None)[source]¶
Write object to a comma-separated values (csv) file.
Parameters
path_or_buf - str, path object, file-like object, or None, default NoneString, path object (implementing os.PathLike[str]), or file-like object implementing a write() function. If None, the result is returned as a string. If a non-binary file object is passed, it should be opened with newline=’’, disabling universal newlines. If a binary file object is passed, mode might need to contain a ‘b’.
...
Первое: If a non-binary file object is passed, it should be opened with newline=’’, disabling universal newlines - означает, что если первым параметром передан открытый текстовый файл, то он должен быть открыт с параметром newline='', аналогично как при работе со стандартным модулем csv.
Можно также не открывать файл вручную, а указать первым параметром имя файла, режим с дозаписью указать через параметр mode (см. кусок документации выше, по умолчанию он mode='w', меняете на mode='a').
Второе: видим волшебный параметр header=True, который, очевидно, отвечает за добавление заголовков. Соответственно вам нужно указать header=False.
Но, конечно же, лучше не дозаписывать по одной строке в файл в цикле, а сформировать датафрейм, потом сохранить его целиком.
