Sử dụng một bộ không tốt trừ khi bạn thực sự muốn giữ một dòng duy nhất với các giá trị định kỳ không chỉ giữ các dòng duy nhất, bạn cần tìm các giá trị duy nhất nhìn qua tất cả các tệp trước tiên mà Counter
dict sẽ làm:
with open["test.csv", encoding="utf-8"] as f, open["file_out.csv", "w"] as out:
from collections import Counter
from csv import reader, writer
wr = writer[out]
header = next[f] # get header
# get count of each first/last name pair lowering each string
counts = Counter[[a.lower[], b.lower[]] for a, b, *_ in reader[f]]
f.seek[0] # reset counter
out.write[next[f]] # write header ?
# iterate over the file again, only keeping rows which have
# unique first and second names
wr.writerows[row for row in reader[f]
if counts[row[0].lower[],row[1].lower[]] == 1]
Input:
FirstName,LastName,id,id2,id3
John,Doe,123,432,645
Jacob,Smith,456,372,383
Susy,Saucy,9999,12,8r83
Contractor,#1,8dh,28j,153s
Testing2,Contrator,7463,99999,0283
JOHN,DOE,999,888,999
SUSY,SAUCY,8373,08j,9023
file_out:
FirstName,LastName,id,id2,id3
Jacob,Smith,456,372,383
Contractor,#1,8dh,28j,153s
Testing2,Contrator,7463,99999,0283
FirstName,LastName,id,id2,id3
John,Doe,123,432,645
Jacob,Smith,456,372,383
Susy,Saucy,9999,12,8r83
Contractor,#1,8dh,28j,153s
Testing2,Contrator,7463,99999,0283
JOHN,DOE,999,888,999
SUSY,SAUCY,8373,08j,9023
0 tính số lần mỗi tên xuất hiện sau khi được hạ xuống. Sau đó, chúng tôi đặt lại con trỏ và chỉ viết các dòng có hai giá trị cột đầu tiên chỉ được nhìn thấy một lần trong toàn bộ tệp.Hoặc không có mô -đun CSV có thể nhanh hơn nếu bạn có cột Namy:
with open["test.csv"] as f, open["file_out.csv","w"] as out:
from collections import Counter
header = next[f] # get header
next[f] # skip blank line
counts = Counter[tuple[map[str.lower,line.split[",", 2][:2]]] for line in f]
f.seek[0] # back to start of file
next[f], next[f] # skip again
out.write[header] # write original header ?
out.writelines[line for line in f
if counts[map[str.lower,line.split[",", 2][:2]]] == 1]
Bước 2: Đọc các tệp CSV. Bước thứ hai là đọc các tệp CSV đã tạo. ....how to compare two CSV files in python using pandas using various methods.
Trong phần này, bạn sẽ biết tất cả các bước cần thiết để so sánh hai tệp CSV trong Python bằng Pandas. Chỉ cần làm theo tất cả các bước để hiểu rõ hơn.
Bước 1: Tạo tệp CSVS mẫu
Bước đầu tiên là tạo các tệp CSV mẫu cho phương thức. Đầu tiên tôi sẽ tạo hai khung dữ liệu mẫu và sau đó xuất mỗi DataFrame sang tệp CSV. Nó sẽ sử dụng để đọc tệp CSV và so sánh chúng.
Thực hiện các dòng mã bên dưới để tạo hai tệp CSVS mẫu.
import pandas as pd
data1 = {"country":["India","USA","UK","Germany"],"dial_code":[91,1,44,49]}
df1 = pd.DataFrame[data1]
df1.to_csv["data1.csv",index=None]
data2 = {"country":["India","USA","UK","Germany","Australia","China"],"dial_code":[91,1,44,49,61,86]}
df2 = pd.DataFrame[data2]
df2.to_csv["data2.csv",index=None]
print[df1,"\n"]
print[df2]
Đầu ra
Bước 2: Đọc & NBSP; Các tập tin CSV
Bước thứ hai là đọc các tệp CSV đã tạo. Bạn có thể đọc tệp CSV bằng phương thức pandas read_csv []. Chỉ cần chuyển tên tệp của tệp CSV. Nó sẽ chuyển đổi dữ liệu tệp CSV thành DataFrame để thao tác.
Chạy các dòng mã bên dưới để đọc các tệp CSV của bạn.
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
print[df1,"\n"]
print[df2,"\n"]
Đầu ra
country dial_code
0 India 91
1 USA 1
2 UK 44
3 Germany 49
country dial_code
0 India 91
1 USA 1
2 UK 44
3 Germany 49
4 Australia 61
5 China 86
Bước 3: Thực hiện phương pháp để so sánh hai tệp CSV trong Python bằng Pandas
Bây giờ các tệp CSV đã được đọc. Hãy để so sánh cả hai tệp. Bạn sẽ tìm hiểu các phương pháp khác nhau để so sánh với các tệp CSV trong Python.
Phương pháp 1: Sử dụng phương thức isin []
Gói Pandas có hàm isin [] cho phép bạn kiểm tra xem có bản ghi trong cả hai tệp CSV hay không. Nếu nó tìm thấy sau đó trả về true khác trả về sai. Sau đó, chúng ta có thể nhận được các giá trị bằng cách sử dụng DF [Hồi Boolean_result,]. df[“boolean_result”].
Thực hiện các dòng mã bên dưới để so sánh hai tệp CSV.
# method 1 isin[] metthod
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
c_result = df1[df1.apply[tuple,1].isin[df2.apply[tuple,1]]]
print[c_result]
Đầu ra
Ở đây tôi cũng đang sử dụng phương thức application [] để so sánh từng bản ghi hàng với mỗi tệp CSV.
Phương pháp 2: So sánh các tệp CSV bằng phương thức Merge []
Pandas cũng có một hàm hợp nhất [] hữu ích trong việc so sánh hai tệp CSV. Nó thực hiện tham gia bên trong, tham gia bên ngoài hoặc cả hai tham gia trên các cột. Bạn chỉ cần vượt qua các khung dữ liệu bạn muốn so sánh dưới dạng danh sách bên trong phương thức hợp nhất []. Hàm sẽ so sánh và trả về DataFrame.
Chạy các dòng mã bên dưới để so sánh các tệp CSV.
# method 2 merge[] method
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
c_result_m = pd.merge[df1,df2]
print[c_result_m]
Đầu ra
Sự kết luận
Pandas là gói Python tốt nhất để thao tác các bộ dữ liệu lớn. Nếu bạn có các tệp CSV thì bạn có thể so sánh chúng bằng các phương thức trên.
Tôi hy vọng bạn đã thích hướng dẫn này. Nếu bạn có bất kỳ đề xuất hoặc muốn bao gồm một số phương thức trong hướng dẫn này thì bạn có thể liên hệ với chúng tôi để biết thêm thông tin.
Tham gia danh sách của chúng tôi
Đăng ký danh sách gửi thư của chúng tôi và nhận được những thứ thú vị và cập nhật vào hộp thư đến email của bạn.
Chúng tôi tôn trọng quyền riêng tư của bạn và coi trọng việc bảo vệ nó
Cảm ơn bạn đã đăng ký. Một email xác nhận đã được gửi đến địa chỉ email của bạn.
Có gì đó đã sai.