2015-12-04 36 views
50

Tôi đang đọc tệp csv vào pandas. Tệp csv này bao gồm bốn cột và một số hàng, nhưng không có hàng tiêu đề mà tôi muốn thêm. Tôi đã cố gắng như sau:Cách thêm hàng tiêu đề vào một chú gấu trúc DataFrame

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

Nhưng khi tôi áp dụng mã, tôi nhận được lỗi sau:

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

chính xác không lỗi có ý nghĩa gì? Và những gì sẽ là một cách sạch sẽ trong python để thêm một hàng tiêu đề vào tập tin csv của tôi/pandas df?

Trả lời

84

Bạn có thể sử dụng trực tiếp trong namesread_csv

names : array-like, default None List of column names to use. If file contains no header row, then you should explicitly pass header=None

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

Dòng dưới đây sẽ không làm việc như bạn mong đợi. Cov đã là một khung dữ liệu, giả sử nó thực sự có 4 cột khi nó được đọc từ tệp.

Frame=pd.DataFrame([Cov], columns = ["Sequence", "Start", "End", "Coverage"]) 
+4

Bạn sẽ cười. Tôi thực sự đã thử điều này, nhưng không biết rằng bạn phải đặt các dấu ngoặc vuông xung quanh tên. Mà là một cách hợp lý nhìn lại. Cảm ơn bạn! –

+0

Không phải lo lắng, chúng tôi đã làm tất cả những sai lầm ngớ ngẩn đó. Tôi cũng phạm tội. – Leb

41

Hoặc bạn có thể đọc được bạn csv với header=None và sau đó thêm nó với df.columns:

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

đã làm điều này, chỉ cần kiểm tra nó với [cũng rõ ràng là tôi biết, u biết điều đó. Nhưng vẫn ...

my_CSV_File.head() 

Hy vọng nó sẽ giúp ... Cheers

+0

Vui lòng định dạng mã của bạn bằng nút '{}'. Thụt lề. – MrT

0

Để khắc phục mã của bạn bạn chỉ có thể thay đổi [Cov]-Cov.values, tham số đầu tiên của pd.DataFrame sẽ trở thành một numpy mảng đa chiều:

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

Nhưng giải pháp thông minh nhất vẫn được sử dụng pd.read_excel với header=Nonenames=columns_list.

Các vấn đề liên quan