Bỏ qua các hàng trong khi nhập csv gấu trúc


97

Tôi đang cố gắng nhập tệp .csv bằng cách sử dụng pandas.read_csv(), tuy nhiên tôi không muốn nhập hàng thứ 2 của tệp dữ liệu (hàng có index = 1 để lập chỉ mục 0).

Tôi không thể biết cách không nhập nó vì các đối số được sử dụng với lệnh có vẻ không rõ ràng:

Từ trang web của gấu trúc:

skiprows : dạng danh sách hoặc số nguyên

Số hàng cần bỏ qua (được lập chỉ mục 0) hoặc số hàng cần bỏ qua (int) ở đầu tệp. "

Nếu tôi đưa skiprows=1các đối số vào, làm thế nào nó biết bỏ qua hàng đầu tiên hay bỏ qua hàng có chỉ mục 1?


2
Tôi đoán rằng vì nó nói rằng nó có thể là "giống danh sách hoặc số nguyên" và sau đó cung cấp cho bạn hai tùy chọn (bỏ qua hàng hoặc bỏ qua # hàng khi bắt đầu) thì nếu bạn cung cấp cho nó danh sách [1] nó sẽ chỉ bỏ qua hàng 1 (hàng thứ 2). Nếu bạn đã cho nó một số nguyên (ví dụ 10) thì nó sẽ bỏ qua 10 hàng đầu tiên.
Ffisegydd

1
Tuyệt vời mà đã làm việc. Cảm ơn rất nhiều. Chỉ cần tự hỏi làm thế nào nó sẽ phân biệt giữa chỉ mục và int. [] là câu trả lời.
thosphor

Câu trả lời:


144

Bạn có thể thử cho mình:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

Vâng, cảm ơn, tôi chỉ cần biết rằng chỉ mục đã được chỉ định bên trong dấu ngoặc vuông [].
thosphor

11
bằng Python 3: from io import StringIO
Dima Lituiev 30/03/16

^ Không cần nhập gì cả, có thể truy cập trực tiếp bằng pd.compat.StringIO .
cs95

30

Mình chưa có danh tiếng để bình luận, nhưng mình muốn thêm vào câu trả lời của alko để tham khảo thêm.

Từ các tài liệu :

bỏ qua: Tập hợp các số cho các hàng trong tệp cần bỏ qua. Cũng có thể là một số nguyên để bỏ qua n hàng đầu tiên


14

Tôi gặp sự cố tương tự khi chạy trình duyệt khi đọc tệp csv. Tôi đã làm doning jump_rows = 1 điều này sẽ không hoạt động

Ví dụ đơn giản cung cấp một ý tưởng về cách sử dụng trình duyệt trong khi đọc tệp csv.

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

1

Tất cả các câu trả lời này đều thiếu một điểm quan trọng - dòng thứ n là dòng thứ n trong tệp, không phải hàng thứ n trong tập dữ liệu. Tôi gặp tình huống tải xuống một số dữ liệu đo luồng cổ từ USGS. Phần đầu của tập dữ liệu được chú thích bằng '#', dòng đầu tiên sau đó là các nhãn, tiếp theo là dòng mô tả các loại ngày và cuối cùng của chính dữ liệu. Tôi không biết có bao nhiêu dòng bình luận, nhưng tôi biết vài dòng đầu tiên là gì. Thí dụ:

----------------------------- CẢNH BÁO -------------------- --------------

Một số dữ liệu mà bạn có được từ cơ sở dữ liệu của Cơ quan Khảo sát Địa chất Hoa Kỳ này

có thể chưa nhận được sự chấp thuận của Giám đốc. ... agency_cd site_no datetime tz_cd 139719_00065 139719_00065_cd

5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A

Sẽ rất hay nếu có một cách để tự động bỏ qua hàng thứ n cũng như hàng thứ n.

Xin lưu ý rằng tôi có thể khắc phục sự cố của mình với:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)

-1

skip[1] sẽ bỏ qua dòng thứ hai, không phải dòng đầu tiên.


-8

Ngoài ra, hãy chắc chắn rằng tệp của bạn thực sự là tệp CSV. Ví dụ: nếu bạn có tệp .xls và chỉ cần thay đổi phần mở rộng tệp thành .csv, tệp sẽ không nhập và sẽ gây ra lỗi ở trên. Để kiểm tra xem đây có phải là vấn đề của bạn hay không, hãy mở tệp trong excel và nó có thể sẽ thông báo:

"Định dạng tệp và phần mở rộng của 'Filename.csv' không khớp. Tệp có thể bị hỏng hoặc không an toàn. Trừ khi bạn tin tưởng nguồn của nó, đừng mở nó. Bạn vẫn muốn mở nó?"

Để sửa tệp: mở tệp trong Excel, nhấp vào "Lưu dưới dạng", Chọn định dạng tệp để lưu dưới dạng (sử dụng .cvs), sau đó thay thế tệp hiện có.

Đây là vấn đề của tôi và đã sửa lỗi cho tôi.


9
Đây có thể là vấn đề của bạn, nhưng nó không liên quan gì đến câu hỏi và nó không cố gắng trả lời nó. Nó chỉ đơn giản giải thích một số vấn đề bổ sung khác mà bạn gặp phải. Bạn cũng có thể nói "cũng nhớ để sạc máy tính xách tay của bạn, tôi đã không có pin và tôi mất tất cả thay đổi của tôi Đó là vấn đề của tôi."
JC Rocamonde
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.