добавить заголовок в CSV-файл с разделителями табуляции с Python - PullRequest
0 голосов
/ 02 мая 2018

У меня есть CSV-файл с разделителями табуляции. У него нет заголовка. Как я могу добавить заголовок? это то, что я пытался получить ошибку памяти. Я использую Jupyter и Python 3.6. *

import csv
with open('main_file.csv',newline='') as f:
    r = csv.reader(f)
    data = [line for line in r]
with open('file.csv','wb',newline='') as f:
    w = csv.writer(f, delimiter='\t')
    w.writerow(['a', 'b','c','d','e','f'])
    w.writerows(data)

мой пример данных csv

    1    2    3    4
    5    6    7    8
    9    10    11    12

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

если вы планируете загружать данные в панд, вам вообще не нужно csv.

import pandas as pd
df = pd.read_csv(filename, sep='\t\, names=['a','b','c',...])

должен делать то, что вы хотите.

После этого вы можете записать фрейм данных как csv через

df.to_csv(filename, sep`='\t')
0 голосов
/ 02 мая 2018

Может ли что-то подобное помочь?

import pandas as pd
my_file = "C:\my_path\my_file.csv"
df = pd.read_csv(my_file, sep='\t', names = ["a", "b", "c", "d", "e", "f"])
df.to_csv(my_file, sep='\t', index = False)
0 голосов
/ 02 мая 2018

Если вы получаете ошибку памяти, вам, вероятно, нужно читать / писать по одной строке за раз следующим образом:

import csv

with open('main_file.csv', newline='') as f_input, open('file.csv', 'w', newline='') as f_output:
    r = csv.reader(f_input, delimiter='\t')
    w = csv.writer(f_output, delimiter='\t')

    w.writerow(['a', 'b','c','d','e','f'])
    w.writerows(r)

Также обратите внимание, что вы не должны использовать двоичный режим при записи файла CSV (раньше это требовалось в Python 2.x).


В файле, который вы дали, кажется, есть только пробелы, разделяющие каждое значение, а не символ табуляции (который занимал бы только одну позицию символа). Возможно, вы потеряли символы табуляции при открытии / сохранении в текстовом редакторе?

Чтобы прочитать этот файл (при условии пробелов), поместите символы табуляции обратно и добавьте свой заголовок:

import csv

with open('main_file.csv', newline='') as f_input, open('file.csv', 'w', newline='') as f_output:
    r = csv.reader(f_input, delimiter='\t')
    w = csv.writer(f_output, delimiter='\t')

    w.writerow(['a', 'b','c','d','e','f'])
    w.writerows(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...