Як додати рядок заголовка до панди DataFrame


166

Я читаю файл CSV в pandas. Цей файл CSV складається з чотирьох стовпців та деяких рядків, але не має рядка заголовка, який я хочу додати. Я намагався:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

Але коли я застосовую код, я отримую таку помилку:

ValueError: Shape of passed values is (1, 1), indices imply (4, 1)

Що саме означає помилка? І що було б чистим способом у python додати рядок заголовка до мого файлу CSV / pandas df?


Ось інша інтерпретація вашого питання: Додайте ще один заголовок до існуючого фрейму даних, щоб створити MultiIndex.
cs95

Відповіді:


257

Ви можете використовувати namesбезпосередньо вread_csv

імена: схожий на масив, за замовчуванням Немає Список імен стовпців, які слід використовувати. Якщо файл не містить рядка заголовка, вам слід явно передавати заголовок = None

Cov = pd.read_csv("path/to/file.txt", 
                  sep='\t', 
                  names=["Sequence", "Start", "End", "Coverage"])

9
Ви будете сміятися. Я насправді пробував це, але не знав про те, що ви повинні поставити квадратні дужки навколо імен. Що логічно в ретроспективі. Дякую!
послідовність_хард

Не хвилюйтесь, ми всі зробили ці дурні помилки. Я теж винен у них.
Леб

@Leb, у мене була точно така ж проблема, і я спробував ваше рішення. Я отримав заголовки таблиці, але перший рядок також був замінений на ті ж назви заголовків. Що я зараз роблю?
007mrviper

це додає більше стовпців до моїх даних, усі з NaNатрибутами. Це було тому, що мій роздільник - порожній простір.
SalahAdDin

128

Крім того, ви можете прочитати ваш csv, header=Noneа потім додати його за допомогою df.columns:

Cov = pd.read_csv("path/to/file.txt", sep='\t', header=None)
Cov.columns = ["Sequence", "Start", "End", "Coverage"]

15
col_Names=["Sequence", "Start", "End", "Coverage"]
my_CSV_File= pd.read_csv("yourCSVFile.csv",names=col_Names)

зробивши це, просто перевірте це [ну, очевидно, я знаю, ви знаєте це. Але все ж...

my_CSV_File.head()

Сподіваюсь, це допоможе ... Ура


Будь ласка, відформатуйте свій код {}кнопкою. Відступ має значення.
Містер T

7

Щоб виправити код , який можна просто змінити , [Cov]щоб Cov.values, перший параметр pd.DataFrameбуде багатовимірний numpyмасив:

Cov = pd.read_csv("path/to/file.txt", sep='\t')
Frame=pd.DataFrame(Cov.values, columns = ["Sequence", "Start", "End", "Coverage"])
Frame.to_csv("path/to/file.txt", sep='\t')

Але найрозумнішим рішенням все ж є використання pd.read_excelз header=Noneі names=columns_list.


Коли ми надаємо стовпці_ліст, чи можемо ми додати значення за замовчуванням для вибраних стовпців?
Chintan Gotecha
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.