Cara menambahkan baris tajuk ke panda DataFrame


166

Saya sedang membaca file csv pandas. File csv ini terdiri dari empat kolom dan beberapa baris, tetapi tidak memiliki baris header, yang ingin saya tambahkan. Saya telah mencoba yang berikut ini:

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')

Tetapi ketika saya menerapkan kode, saya mendapatkan Kesalahan berikut:

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

Apa sebenarnya arti kesalahan itu? Dan apa yang akan menjadi cara yang bersih dalam python untuk menambahkan baris header ke file csv saya / panda df?


Berikut adalah interpretasi berbeda dari pertanyaan Anda: Tambahkan header lain ke Dataframe yang ada untuk membuat MultiIndex.
cs95

Jawaban:


257

Anda dapat menggunakan nameslangsung diread_csv

names: seperti array, default Tidak ada Daftar nama kolom yang digunakan. Jika file tidak mengandung baris tajuk, maka Anda harus secara eksplisit meneruskan tajuk = Tidak ada

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

9
Anda akan tertawa. Saya benar-benar mencoba ini, tetapi tidak menyadari bahwa Anda harus meletakkan tanda kurung di sekitar nama. Yang secara logis dalam retrospeksi. Terima kasih!
sequence_hard

Jangan khawatir, kita semua telah melakukan kesalahan konyol itu. Saya juga bersalah pada mereka.
Leb

@ Leb, saya punya masalah yang sama persis dan saya mencoba solusi Anda. Saya mendapatkan tajuk untuk tabel tetapi baris pertama juga diganti dengan nama tajuk yang sama. Apa yang saya lakukan sekarang?
007mrviper

itu menambah lebih banyak kolom ke data saya, semuanya dengan NaNatribut. Itu karena pemisah saya adalah ruang kosong.
SalahAdDin

127

Atau Anda dapat membacakan csv dengan Anda header=Nonedan kemudian menambahkannya dengan 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)

Setelah melakukan ini, cukup periksa dengan [yah jelas saya tahu, Anda tahu itu. Tetapi tetap saja...

my_CSV_File.head()

Semoga ini bisa membantu ... Ceria


Harap format kode Anda dengan {}tombol. Lekukan penting.
Tn. T

7

Untuk memperbaiki kode Anda Anda hanya dapat mengubah [Cov]ke Cov.values, parameter pertama pd.DataFrameakan menjadi multi-dimensi numpyarray yang:

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')

Tetapi solusi paling cerdas masih digunakan pd.read_exceldengan header=Nonedan names=columns_list.


Ketika kita memberikan kolom_daftar, dapatkah kita menambahkan nilai default untuk kolom yang dipilih?
Chintan Gotecha
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.