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?

sequence_hard
sumber
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"])
Leb
sumber
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"]
Anton Protopopov
sumber
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

Bhardwaj Joshi
sumber
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.

romulomadu
sumber
Ketika kita memberikan kolom_daftar, dapatkah kita menambahkan nilai default untuk kolom yang dipilih?
Chintan Gotecha