Cách thêm hàng tiêu đề vào DataFrame của gấu trúc


165

Tôi đang đọc một tập tin 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:

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 thì lỗi này có nghĩa là gì? Và điều gì sẽ là một cách sạch trong python để thêm một hàng tiêu đề vào tệp csv / pandas df của tôi?


Đây là một cách giải thích khác nhau cho câu hỏi của bạn: Thêm một tiêu đề khác vào Dataframe hiện có để tạo Multi Index.
cs95

Câu trả lời:


257

Bạn có thể sử dụng namestrực tiếp trongread_csv

tên: giống như mảng, mặc định Không có Danh sách tên cột sẽ sử dụng. Nếu tệp không chứa hàng tiêu đề, thì bạn nên chuyển tiêu đề = Không

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

9
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 dấu ngoặc vuông xung quanh tên. Đó là logic trong nhìn lại. Cảm ơn bạn!
sequence_hard

Đừng lo lắng, tất cả chúng ta đã làm những sai lầm ngớ ngẩn đó. Tôi cũng có tội với họ.
Leb

@Leb, tôi đã có cùng một vấn đề và tôi đã thử giải pháp của bạn. Tôi đã nhận được các tiêu đề cho bảng nhưng hàng đầu tiên cũng được thay thế bằng các tên tiêu đề tương tự. Tôi sẽ làm gì bây giờ?
007mrviper

nó thêm nhiều đồng nghiệp vào dữ liệu của tôi, tất cả đều có NaNthuộc tính. Đó là bởi vì dải phân cách của tôi là một khoảng trống.
SalahAdDin

127

Ngoài ra, bạn có thể đọc csv với header=Nonevà sau đó thêm nó bằng 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)

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

my_CSV_File.head()

Hy vọng nó sẽ giúp ... Chúc mừng


Vui lòng định dạng mã của bạn với {}nút. Vấn đề thụt.
Ông T

7

Để sửa mã của bạn, bạn chỉ cần thay đổi [Cov]thành Cov.values, tham số đầu tiên pd.DataFramesẽ trở thành một numpymả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 là sử dụng pd.read_excelvới header=Nonenames=columns_list.


Khi chúng tôi cung cấp Cột_list, chúng tôi có thể thêm các giá trị mặc định cho các cột được chọn không?
Chintan Gotecha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.