Panda DataFrame'e üstbilgi satırı nasıl eklenir


166

İçine bir csv dosyası okuyorum pandas. Bu csv dosyası dört sütun ve bazı satırlardan oluşur, ancak eklemek istediğim bir başlık satırı yok. Aşağıdakileri deniyorum:

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

Ancak kodu uyguladığınızda, aşağıdaki hatayı alıyorum:

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

Hata tam olarak ne anlama geliyor? Python'da csv dosyama / pandas df'ye bir başlık satırı eklemek için temiz bir yol ne olurdu?


Sorunuzun farklı bir yorumu: MultiIndex oluşturmak için mevcut bir Dataframe'e başka bir başlık ekleyin.
cs95

Yanıtlar:


257

Sen kullanabilirsiniz namesdoğrudanread_csv

names: dizi benzeri, varsayılan Yok Kullanılacak sütun adlarının listesi. Dosyada üstbilgi satırı yoksa, üstbilgiyi açıkça iletmeniz gerekir = Yok

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

9
Güleceksin. Aslında bunu denedim, ama köşeli parantezleri isimlerin etrafına koymanız gerektiğinden habersizdim. Hangi mantıksal olarak geriye dönüktür. Teşekkür ederim!
sequence_hard

Endişeye gerek yok, hepimiz bu aptalca hataları yaptık. Ben de onlardan suçluyum.
Leb

@Leb, tamamen aynı sorunu yaşadım ve çözümünüzü denedim. Tablonun üstbilgilerini aldım, ancak ilk satır aynı üstbilgi adlarıyla değiştirildi. Şimdi ne yapmalıyım?
007mrviper

tüm NaNözelliklere sahip verilerime daha fazla sütun ekler . Ayırıcımın boş bir alan olmasıydı.
Salahaddin

128

Alternatif olarak, csv ile okuyabilir header=Noneve daha sonra aşağıdakileri ekleyebilirsiniz 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)

Bunu yaptıktan sonra, sadece kontrol edin [tabii ki biliyorum, u biliyorum. Ama hala...

my_CSV_File.head()

Umarım yardımcı olur ... Şerefe


Lütfen kodunuzu {}tuşuyla biçimlendirin . Girinti önemlidir.
Bay T

7

Kodunuzu basitçe değiştirebilirsiniz düzeltmek için [Cov]için Cov.values, ilk parametresi pd.DataFrameçok boyutlu hale gelecektir numpydizi:

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

Ancak en akıllı çözüm hala ve pd.read_excelile birlikte kullanmaktır .header=Nonenames=columns_list


Column_list verdiğimizde, seçilen sütunlar için varsayılan değerler ekleyebilir miyiz?
Chintan Gotecha
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.