Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

Tôi đã có thể tạo CSV với Python bằng cách sử dụng đầu vào từ một số người dùng trên trang web này và tôi muốn bày tỏ lòng biết ơn của mình đối với các bài viết của bạn. Bây giờ tôi đã bối rối và sẽ đăng câu hỏi đầu tiên của tôi.

Đầu vào của tôi.csv trông như thế này:

day,month,year,lat,long
01,04,2001,45.00,120.00
02,04,2003,44.00,118.00

Tôi đang cố gắng xóa cột "Năm" và tất cả các mục của nó. Tổng cộng có hơn 40 mục với phạm vi năm từ 1960-2010.

Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

Martineau

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

Hỏi ngày 28 tháng 9 năm 2011 lúc 20:04Sep 28, 2011 at 20:04

3

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )

BTW, vòng lặp

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
5 có thể được gỡ bỏ, nhưng không thực sự đơn giản hóa.

        in_iter= ( (r[0], r[1], r[3], r[4]) for r in rdr )
        wtr.writerows( in_iter )

Ngoài ra, bạn có thể gắn bó theo cách siêu nghĩa với các yêu cầu để xóa một cột. Tôi thấy đây là một chính sách xấu nói chung vì nó không áp dụng để loại bỏ nhiều hơn một cột. Khi bạn cố gắng loại bỏ thứ hai, bạn phát hiện ra rằng các vị trí đã thay đổi và hàng kết quả không rõ ràng. Nhưng chỉ có một cột, điều này hoạt động.

            del r[2]
            wtr.writerow( r )

Ryan r

8.21215 Huy hiệu vàng81 Huy hiệu bạc109 Huy hiệu đồng15 gold badges81 silver badges109 bronze badges

Đã trả lời ngày 28 tháng 9 năm 2011 lúc 21:08Sep 28, 2011 at 21:08

S.LottS.LottS.Lott

377K78 Huy hiệu vàng503 Huy hiệu bạc771 Huy hiệu Đồng78 gold badges503 silver badges771 bronze badges

4

Việc sử dụng mô -đun Pandas sẽ dễ dàng hơn nhiều.

import pandas as pd
f=pd.read_csv("test.csv")
keep_col = ['day','month','lat','long']
new_f = f[keep_col]
new_f.to_csv("newFile.csv", index=False)

Và đây là lời giải thích ngắn:

>>>f=pd.read_csv("test.csv")
>>> f
   day  month  year  lat  long
0    1      4  2001   45   120
1    2      4  2003   44   118
>>> keep_col = ['day','month','lat','long'] 
>>> f[keep_col]
    day  month  lat  long
0    1      4   45   120
1    2      4   44   118
>>>

Đã trả lời ngày 24 tháng 12 năm 2015 lúc 16:49Dec 24, 2015 at 16:49

Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

SunilthoratsunilthoratSunilThorat

1.5722 huy hiệu vàng11 Huy hiệu bạc15 Huy hiệu đồng2 gold badges11 silver badges15 bronze badges

3

Sử dụng một dict để lấy các tiêu đề sau đó lặp lại giúp bạn có những gì bạn cần một cách sạch sẽ.

import csv
ct = 0
cols_i_want = {'cost' : -1, 'date' : -1}
with open("file1.csv","rb") as source:
    rdr = csv.reader( source )
    with open("result","wb") as result:
        wtr = csv.writer( result )
        for row in rdr:
            if ct == 0:
              cc = 0
              for col in row:
                for ciw in cols_i_want: 
                  if col == ciw:
                    cols_i_want[ciw] = cc
                cc += 1
            wtr.writerow( (row[cols_i_want['cost']], row[cols_i_want['date']]) )
            ct += 1

Đã trả lời ngày 16 tháng 11 năm 2012 lúc 5:50Nov 16, 2012 at 5:50

Bạn có thể trực tiếp xóa cột chỉ bằng

del variable_name['year']

Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

Tunaki

128K45 Huy hiệu vàng322 Huy hiệu bạc406 Huy hiệu Đồng45 gold badges322 silver badges406 bronze badges

Đã trả lời ngày 28 tháng 3 năm 2016 lúc 13:16Mar 28, 2016 at 13:16

Ankurankurankur

1.9892 huy hiệu vàng9 Huy hiệu bạc12 Huy hiệu đồng2 gold badges9 silver badges12 bronze badges

1

Tôi sẽ sử dụng gấu trúc với số col

f = pd.read_csv ("test.csv", usecols = [0,1,3,4]))

f.to_csv ("test.csv", index = false)

Đã trả lời ngày 21 tháng 4 năm 2020 lúc 16:03Apr 21, 2020 at 16:03

Dariodariodario

813 Huy hiệu Đồng3 bronze badges

Bạn có thể sử dụng gói

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
6 để lặp lại tệp CSV của mình và xuất các cột mà bạn muốn vào tệp CSV khác.

Ví dụ dưới đây không được kiểm tra và nên minh họa một giải pháp:

import csv

file_name = 'C:\Temp\my_file.csv'
output_file = 'C:\Temp\new_file.csv'
csv_file = open(file_name, 'r')
## note that the index of the year column is excluded
column_indices = [0,1,3,4]
with open(output_file, 'w') as fh:
    reader = csv.reader(csv_file, delimiter=',')
    for row in reader:
       tmp_row = []
       for col_inx in column_indices:
           tmp_row.append(row[col_inx])
       fh.write(','.join(tmp_row))

Đã trả lời ngày 28 tháng 9 năm 2011 lúc 20:06Sep 28, 2011 at 20:06

Aweisaweisaweis

4.9983 Huy hiệu vàng29 Huy hiệu bạc41 Huy hiệu đồng3 gold badges29 silver badges41 bronze badges

2

Ngoài đỉnh đầu của tôi, điều này sẽ làm điều đó mà không có bất kỳ loại lỗi nào cũng không thể định cấu hình bất cứ điều gì. Đó là "còn lại cho người đọc".

outFile = open( 'newFile', 'w' )
for line in open( 'oldFile' ):
   items = line.split( ',' )
   outFile.write( ','.join( items[:2] + items[ 3: ] ) )
outFile.close()

Đã trả lời ngày 28 tháng 9 năm 2011 lúc 20:13Sep 28, 2011 at 20:13

Brocbrocbroc

2221 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

Tôi sẽ thêm một câu trả lời khác cho câu hỏi này. Vì OP không nói rằng họ cần phải làm điều đó với Python, nên cách nhanh nhất để xóa cột (đặc biệt khi tệp đầu vào có hàng trăm ngàn dòng), là bằng cách sử dụng

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
7.

Đây là loại vấn đề mà AWK tỏa sáng:

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
0

.

Tín dụng đi 100% cho @Eric-Wilson, người đã cung cấp câu trả lời tuyệt vời này, như một nhận xét về câu hỏi ban đầu, 10 năm trước, gần như không có bất kỳ tín dụng nào.

Đã trả lời ngày 4 tháng 10 năm 2021 lúc 20:16Oct 4, 2021 at 20:16

Clint Eastwoodclint EastwoodClint Eastwood

4.7372 Huy hiệu vàng30 Huy hiệu bạc27 Huy hiệu Đồng2 gold badges30 silver badges27 bronze badges

Thử:

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
1

Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

Đã trả lời ngày 30 tháng 4 năm 2019 lúc 1:02Apr 30, 2019 at 1:02

Hướng dẫn how remove unwanted columns csv python? - làm thế nào để loại bỏ các cột không mong muốn csv python?

Nó phụ thuộc vào cách bạn lưu trữ CSV được phân tích cú pháp, nhưng nhìn chung bạn muốn toán tử DEL.

Nếu bạn có một loạt các dicts:

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
2

Nếu bạn có một mảng mảng:

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
3

Đã trả lời ngày 28 tháng 9 năm 2011 lúc 20:10Sep 28, 2011 at 20:10

KQ.KQ.KQ.

8624 Huy hiệu bạc8 Huy hiệu đồng4 silver badges8 bronze badges

Hãy thử Python với gấu trúc và loại trừ cột, bạn không muốn có:

import csv
with open("source","rb") as source:
    rdr= csv.reader( source )
    with open("result","wb") as result:
        wtr= csv.writer( result )
        for r in rdr:
            wtr.writerow( (r[0], r[1], r[3], r[4]) )
4

Đã trả lời ngày 8 tháng 3 lúc 20:29Mar 8 at 20:29

Wbryckiwbryckiwbrycki

Huy hiệu Silver 911 Huy hiệu Đồng1 silver badge7 bronze badges

Làm cách nào để xóa một cột khỏi tệp CSV?

Cách xóa cột trong CSV..
Đầu tiên đọc dữ liệu từ tệp CSV và sẽ cung cấp đầu ra dưới dạng dữ liệu ..
Và sau đó xóa cột đó khỏi DataTable như dưới đây. Đề cập đến danh sách các tên cột bạn muốn từ dữ liệu đầu vào gốc ở đây. ....
Và sau đó sử dụng hoạt động ghi tệp CSV và truyền NewDT để ghi vào nó ..

Làm cách nào để xóa một cột khỏi tệp CSV trong gấu trúc?

Để xóa các hàng và cột khỏi DataFrames, Pandas sử dụng chức năng của Drop Drop.Để xóa một cột hoặc nhiều cột, hãy sử dụng tên của (các) cột và chỉ định trục của Trục là 1. Ngoài ra, như trong ví dụ dưới đây, tham số 'cột' đã được thêm vàocần 'trục'.use the name of the column(s), and specify the “axis” as 1. Alternatively, as in the example below, the 'columns' parameter has been added in Pandas which cuts out the need for 'axis'.

Làm cách nào để chỉnh sửa cột trong tệp CSV trong Python?

Phương pháp 1..
Nhập mô -đun ..
Mở tệp CSV và đọc dữ liệu của nó ..
Tìm cột để được cập nhật ..
Cập nhật giá trị trong tệp CSV bằng hàm_csv () ..

Làm cách nào để xóa một cột khỏi tệp văn bản trong Python?

Sử dụng lệnh Colrm để xóa các cột được chỉ định khỏi tệp.Đầu vào được lấy từ đầu vào tiêu chuẩn.Đầu ra được gửi đến đầu ra tiêu chuẩn.Nếu lệnh được gọi bằng một tham số, các cột của mỗi dòng từ cột được chỉ định đến cột cuối cùng sẽ được xóa.. Input is taken from standard input. Output is sent to standard output. If the command is called with one parameter, the columns of each line from the specified column to the last column are removed.