Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

131

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang yêu cầu Python in số tối thiểu từ một cột dữ liệu CSV, nhưng hàng trên cùng là số cột và tôi không muốn Python đưa hàng trên cùng vào tài khoản. Làm thế nào tôi có thể đảm bảo Python bỏ qua dòng đầu tiên?

Đây là mã cho đến nay:

import csv

with open('all16.csv', 'rb') as inf:
    incsv = csv.reader(inf)
    column = 1                
    datatype = float          
    data = (datatype(column) for row in incsv)   
    least_value = min(data)

print least_value

Bạn cũng có thể giải thích những gì bạn đang làm, không chỉ đưa ra mã? Tôi rất mới với Python và muốn đảm bảo rằng tôi hiểu mọi thứ.

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Martineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

hỏi ngày 5 tháng 7 năm 2012 lúc 17:20Jul 5, 2012 at 17:20

4

Bạn có thể sử dụng một thể hiện của lớp

    data = (float(row[1]) for row in reader)
4 của mô-đun
    data = (float(row[1]) for row in reader)
3 để suy ra định dạng của tệp CSV và phát hiện xem hàng tiêu đề có xuất hiện cùng với chức năng
    data = (float(row[1]) for row in reader)
5 tích hợp để bỏ qua hàng đầu tiên khi cần không:
    data = (float(row[1]) for row in reader)
4
class to deduce the format of a CSV file and detect whether a header row is present along with the built-in
    data = (float(row[1]) for row in reader)
5 function to skip over the first row only when necessary:

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)

    data = (float(row[1]) for row in reader)
6 và
    data = (float(row[1]) for row in reader)
7 được mã hóa cứng trong ví dụ của bạn, nên việc xử lý
    data = (float(row[1]) for row in reader)
8 sẽ nhanh hơn một chút như thế này:

    data = (float(row[1]) for row in reader)

Lưu ý: Mã trên là dành cho Python 3.x. Đối với Python 2.x, hãy sử dụng dòng sau để mở tệp thay vì những gì được hiển thị: the code above is for Python 3.x. For Python 2.x use the following line to open the file instead of what is shown:

with open('all16.csv', 'rb') as file:

Đã trả lời ngày 5 tháng 7 năm 2012 lúc 18:11Jul 5, 2012 at 18:11

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Martineaumartineaumartineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

8

hỏi ngày 5 tháng 7 năm 2012 lúc 17:20

next(inf)

Bạn có thể sử dụng một thể hiện của lớp

    data = (float(row[1]) for row in reader)
4 của mô-đun
    data = (float(row[1]) for row in reader)
3 để suy ra định dạng của tệp CSV và phát hiện xem hàng tiêu đề có xuất hiện cùng với chức năng
    data = (float(row[1]) for row in reader)
5 tích hợp để bỏ qua hàng đầu tiên khi cần không:

    data = (float(row[1]) for row in reader)
6 và
    data = (float(row[1]) for row in reader)
7 được mã hóa cứng trong ví dụ của bạn, nên việc xử lý
    data = (float(row[1]) for row in reader)
8 sẽ nhanh hơn một chút như thế này:Jul 5, 2012 at 18:15

Lưu ý: Mã trên là dành cho Python 3.x. Đối với Python 2.x, hãy sử dụng dòng sau để mở tệp thay vì những gì được hiển thị:jfs

Đã trả lời ngày 5 tháng 7 năm 2012 lúc 18:11182 gold badges948 silver badges1619 bronze badges

4

Martineaumartineau
A more concise template code might look like this:

import csv
with open('stocks.csv') as f:
    f_csv = csv.reader(f) 
    headers = next(f_csv) 
    for row in f_csv:
        # Process row ...

Để bỏ qua dòng đầu tiên, chỉ cần gọi:Mar 31, 2018 at 11:02

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Các tập tin trong Python là trình lặp qua các dòng.shin

Đã trả lời ngày 5 tháng 7 năm 2012 lúc 18:156 silver badges9 bronze badges

JFSJFS

with open('all16.csv') as tmp:
    # Skip first line (if any)
    next(tmp, None)

    # {line_num: row}
    data = dict(enumerate(csv.DictReader(tmp)))

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

383K182 Huy hiệu vàng948 Huy hiệu bạc1619 Huy hiệu đồng

Mượn từ Python Cookbook, một mã mẫu ngắn gọn hơn có thể trông như thế này:14 gold badges108 silver badges166 bronze badges

Đã trả lời ngày 31 tháng 3 năm 2018 lúc 11:02Dec 18, 2014 at 23:16

ShinshinMaarten

6116 Huy hiệu bạc9 Huy hiệu Đồng2 gold badges12 silver badges8 bronze badges

6

Trong trường hợp sử dụng tương tự, tôi đã phải bỏ qua các dòng gây phiền nhiễu trước dòng với tên cột thực tế của tôi. Giải pháp này hoạt động độc đáo. Đọc tệp trước, sau đó chuyển danh sách cho

    data = (float(row[1]) for row in reader)
9.

from itertools import islice
for row in islice(incsv, 30, None):
    # process

VeedracJul 5, 2012 at 17:26

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

55,8K14 Huy hiệu vàng108 Huy hiệu bạc166 Huy hiệu đồngJon Clements

Đã trả lời ngày 18 tháng 12 năm 2014 lúc 23:1632 gold badges240 silver badges273 bronze badges

0

Maartenmaarten

1.4312 Huy hiệu vàng12 Huy hiệu bạc8 Huy hiệu đồngJul 5, 2012 at 17:53

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Thông thường bạn sẽ sử dụng

with open('all16.csv', 'rb') as file:
0 để nâng cao một hàng tererator, vì vậy bạn bỏ qua tiêu đề. Cái kia (nói rằng bạn muốn bỏ qua 30 hàng) sẽ là:iruvar

Đã trả lời ngày 5 tháng 7 năm 2012 lúc 17:266 gold badges51 silver badges81 bronze badges

Jon Clements ♦ Jon Clements

with open('all16.csv', 'rb') as file:
1

135K32 Huy hiệu vàng240 Huy hiệu bạc273 Huy hiệu Đồng

csv_data = csv.reader(open('sample.csv'))
csv_data.next() # skip first row
for row in csv_data:
    print(row) # should print second row

Sử dụng CSV.DicTreader thay vì CSV.Reader. Nếu tham số FieldName bị bỏ qua, các giá trị trong hàng đầu tiên của CSVFile sẽ được sử dụng làm tên trường. Sau đó, bạn sẽ có thể truy cập các giá trị trường bằng hàng ["1"], v.v.

with open('all16.csv', 'rb') as file:
2

Đã trả lời ngày 5 tháng 7 năm 2012 lúc 17:53

csv_data = csv.reader(open('sample.csv'))
csv_data.__next__() # skip first row
for row in csv_data:
    print(row) # should print second row

IruvariruvarJul 26, 2020 at 4:49

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

22.1k6 Huy hiệu vàng51 Huy hiệu bạc81 Huy hiệu đồngRomil Patel

Python 2.x7 gold badges39 silver badges70 bronze badges

Trả về hàng tiếp theo của người đọc đối tượng có thể lặp lại dưới dạng một danh sách, được phân tích cú pháp theo phương ngữ hiện tại.

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
0

Python 3.x

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
1

Trả về hàng tiếp theo của người đọc đối tượng có thể lặp lại dưới dạng danh sách (nếu đối tượng được trả về từ Reader ()) hoặc một dict (nếu đó là một thể hiện dictreader), được phân tích cú pháp theo phương ngữ hiện tại. Thông thường bạn nên gọi cái này là tiếp theo (người đọc).Oct 9, 2018 at 18:21

Đã trả lời ngày 26 tháng 7 năm 2020 lúc 4:49Lassi

Romil Patelromil Patel2 gold badges19 silver badges32 bronze badges

11.8K7 Huy hiệu vàng39 Huy hiệu bạc70 Huy hiệu Đồng

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
2

Tài liệu cho mô -đun CSV Python 3 cung cấp ví dụ này:

    data = (float(row[1]) for row in reader)
4 sẽ cố gắng tự động phát hiện nhiều điều về tệp CSV. Bạn cần gọi rõ ràng phương thức
with open('all16.csv', 'rb') as file:
4 của nó để xác định xem tệp có đường tiêu đề hay không. Nếu có, sau đó bỏ qua hàng đầu tiên khi lặp lại các hàng CSV. Bạn có thể làm điều đó như thế này:Sep 16, 2020 at 1:34

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Đã trả lời ngày 9 tháng 10 năm 2018 lúc 18:21

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
3

LassilassiAug 28, 2014 at 15:43

1

3.1822 Huy hiệu vàng19 Huy hiệu bạc32 Huy hiệu Đồng

Đây có thể là một câu hỏi rất cũ nhưng với gấu trúc, chúng tôi có một giải pháp rất dễ dàng

Với SKIPROWS = 1, chúng ta có thể bỏ qua hàng đầu tiên thì chúng ta có thể tìm thấy giá trị ít nhất bằng cách sử dụng dữ liệu ['cột']. Min ()

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
4

Đã trả lời ngày 16 tháng 9 năm 2020 lúc 1:34May 1, 2018 at 18:06

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Gói 'Pandas' mới có thể phù hợp hơn 'CSV'. Mã bên dưới sẽ đọc một tệp CSV, theo mặc định diễn giải dòng đầu tiên là tiêu đề cột và tìm mức tối thiểu trên các cột.

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
5

Đã trả lời ngày 28 tháng 8 năm 2014 lúc 15:43

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
6

Bởi vì điều này có liên quan đến một cái gì đó tôi đang làm, tôi sẽ chia sẻ ở đây.Dec 1, 2014 at 10:18

Điều gì sẽ xảy ra nếu chúng ta không chắc chắn nếu có một tiêu đề và bạn cũng không cảm thấy muốn nhập sniffer và những thứ khác?chfw

Nếu nhiệm vụ của bạn là cơ bản, chẳng hạn như in hoặc nối vào danh sách hoặc mảng, bạn chỉ có thể sử dụng câu lệnh IF:2 gold badges27 silver badges31 bronze badges

Đã trả lời ngày 1 tháng 5 năm 2018 lúc 18:06

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
7

Chà, thư viện bao bọc mini của tôi cũng sẽ thực hiện công việc.Mar 12, 2018 at 12:44

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Clint Hartclint HartClint Hart

711 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge

Tôi sẽ chuyển đổi csvreader thành danh sách, sau đó bật phần tử đầu tiên

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
8

Đã trả lời ngày 27 tháng 3 năm 2020 lúc 11:21Mar 27, 2020 at 11:21

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Tim Johntim JohnTim John

1922 Huy hiệu bạc16 Huy hiệu Đồng2 silver badges16 bronze badges

Tôi sẽ sử dụng đuôi để thoát khỏi dòng đầu tiên không mong muốn:

import csv

with open('all16.csv', 'r', newline='') as file:
    has_header = csv.Sniffer().has_header(file.read(1024))
    file.seek(0)  # Rewind.
    reader = csv.reader(file)
    if has_header:
        next(reader)  # Skip header row.
    column = 1
    datatype = float
    data = (datatype(row[column]) for row in reader)
    least_value = min(data)

print(least_value)
9

Đã trả lời ngày 13 tháng 9 năm 2015 lúc 10:26Sep 13, 2015 at 10:26

Karel Adamskarel AdamsKarel Adams

1751 Huy hiệu bạc16 Huy hiệu đồng1 silver badge16 bronze badges

Chỉ cần thêm [1:][1:]

Ví dụ dưới đây:

    data = (float(row[1]) for row in reader)
0

Điều đó phù hợp với tôi trong ipython

OneCricketeer

161K18 Huy hiệu vàng121 Huy hiệu bạc224 Huy hiệu đồng18 gold badges121 silver badges224 bronze badges

Đã trả lời ngày 1 tháng 11 năm 2015 lúc 0:02Nov 1, 2015 at 0:02

Python 3.x

Xử lý tiêu đề UTF8 BOM +

Thật khó chịu khi mô-đun

    data = (float(row[1]) for row in reader)
3 không thể dễ dàng nhận được tiêu đề, cũng có một lỗi với BOM UTF-8 (Char đầu tiên trong tệp). Điều này phù hợp với tôi chỉ bằng cách sử dụng mô -đun
    data = (float(row[1]) for row in reader)
3:

    data = (float(row[1]) for row in reader)
1

Đã trả lời ngày 26 tháng 10 năm 2016 lúc 9:32Oct 26, 2016 at 9:32

Giải pháp đơn giản là sử dụng csv.dictreader ()

    data = (float(row[1]) for row in reader)
2

Hướng dẫn python csv reader skip first row - trình đọc python csv bỏ qua hàng đầu tiên

Ddejohn

8.2533 huy hiệu vàng16 Huy hiệu bạc29 Huy hiệu đồng3 gold badges16 silver badges29 bronze badges

Đã trả lời ngày 21 tháng 12 năm 2021 lúc 11:40Dec 21, 2021 at 11:40

Làm cách nào để bỏ qua một tiêu đề trong khi đọc tệp CSV trong Python?

Để đọc tệp CSV mà không có tiêu đề, hãy sử dụng tham số tiêu đề và đặt nó thành không có ai trong phương thức read_csv ().use the header parameter and set it to “None” in the read_csv() method.

Làm cách nào để bỏ qua hàng đầu tiên trong tệp CSV trong Python?

Sử dụng CSV ...
File = Open ('Sample.csv').
CSV_Reader = CSV.người đọc (tập tin).
next(csv_reader).
Đối với hàng trong CSV_Reader:.
print(row).

Làm thế nào để bạn bỏ qua hàng đầu tiên trong Python?

Sử dụng mở (tệp) để mở tệp.Gọi tiếp theo (Tệp) để bỏ qua dòng đầu tiên của tệp.Call next(file) to skip the first line of the file.

Làm cách nào để xóa hàng đầu tiên khỏi tệp CSV?

Đọc toàn bộ CSV thành một khung gầm gấu, hãy xóa hàng đầu tiên của DataFrame, lưu toàn bộ DataFrame kết quả vào tệp CSV có cùng tên như trong tệp đầu vào của bạn.df = pd.read_csv (..., bỏ qua = 1);DF.df = pd. read_csv(...,skiprows=1) ; df.