Tại sao bạn cần cái này?
Sao chép thủ công là tốt nếu bạn không có quá nhiều tệp để làm việc.
Nhưng hãy tưởng tượng nếu bạn có hơn 100 tệp để incatenate - bạn có sẵn sàng làm thủ công không? Làm điều này lặp đi lặp lại là tẻ nhạt và dễ bị lỗi.
Nếu tất cả các tệp có cùng cấu trúc bảng [cùng các tiêu đề & số cột], hãy để tập lệnh Python nhỏ này thực hiện công việc.
Bước 1: Nhập gói và đặt thư mục làm việc
Thay đổi trên mạng/mydir, thành thư mục làm việc mong muốn của bạn.
import os
import glob
import pandas as pd
os.chdir["/mydir"]
Bước 2: Sử dụng Quả cầu để phù hợp với mẫu ‘CSV,
Khớp với mẫu [‘CSV,] và lưu danh sách các tên tệp trong biến‘ All_filenames. Bạn có thể kiểm tra liên kết này để tìm hiểu thêm về khớp biểu thức thông thường.
extension = 'csv'
all_filenames = [i for i in glob.glob['*.{}'.format[extension]]]
Bước 3: Kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV
Sử dụng gấu trúc để kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV. Tệp đầu ra được đặt tên là Kết hợp_csv.csv, nằm trong thư mục làm việc của bạn.
#combine all files in the list
combined_csv = pd.concat[[pd.read_csv[f] for f in all_filenames ]]
#export to csv
combined_csv.to_csv[ "combined_csv.csv", index=False, encoding='utf-8-sig']
Mã hóa = ‘UTF-8-SIG, được thêm vào để khắc phục vấn đề khi xuất các ngôn ngữ không phải là tiếng Anh.
Và nó đã hoàn thành!
Bài viết này được lấy cảm hứng từ vấn đề thực tế hàng ngày của tôi và cấu trúc mã hóa là từ một cuộc thảo luận về Stackoverflow. Tập lệnh hoàn thành cho cách làm điều này được ghi lại trên GitHub.
Cảm ơn bạn đã đọc. Hãy thử, vui vẻ và cho tôi biết phản hồi của bạn!
Nếu bạn thích những gì tôi đã làm, hãy xem xét theo dõi tôi trên GitHub, Medium và Twitter. Hãy chắc chắn để sao nó trên github: p
Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Giả sử bạn có 2 tệp
extension = 'csv'
all_filenames = [i for i in glob.glob['*.{}'.format[extension]]]
2 như sau:csv1.csv:
id,name
1,Armin
2,Sven
csv2.csv:
id,place,year
1,Reykjavik,2017
2,Amsterdam,2018
3,Berlin,2019
Và bạn muốn kết quả giống như CSV3.CSV này:
id,name,place,year
1,Armin,Reykjavik,2017
2,Sven,Amsterdam,2018
3,,Berlin,2019
Sau đó, bạn có thể sử dụng đoạn trích sau để làm điều đó:
import csv
import pandas as pd
# the file names
f1 = "csv1.csv"
f2 = "csv2.csv"
out_f = "csv3.csv"
# read the files
df1 = pd.read_csv[f1]
df2 = pd.read_csv[f2]
# get the keys
keys1 = list[df1]
keys2 = list[df2]
# merge both files
for idx, row in df2.iterrows[]:
data = df1[df1['id'] == row['id']]
# if row with such id does not exist, add the whole row
if data.empty:
next_idx = len[df1]
for key in keys2:
df1.at[next_idx, key] = df2.at[idx, key]
# if row with such id exists, add only the missing keys with their values
else:
i = int[data.index[0]]
for key in keys2:
if key not in keys1:
df1.at[i, key] = df2.at[idx, key]
# save the merged files
df1.to_csv[out_f, index=False, encoding='utf-8', quotechar="", quoting=csv.QUOTE_NONE]
Với sự trợ giúp của một vòng lặp, bạn có thể đạt được kết quả tương tự cho nhiều tệp như trong trường hợp của bạn [200 tệp CSV].
Để hợp nhất tất cả các tệp CSV, sử dụng mô -đun GLOB. Phương thức OS.Path.join [] được sử dụng bên trong Concat [] để hợp nhất các tệp CSV lại với nhau.
Lúc đầu, nhập các thư viện cần thiết. Chúng tôi đã đặt PD làm bí danh cho thư viện Pandas -
import pandas as pd import glob import os
Bây giờ, hãy để nói rằng chúng tôi có 3 tệp CSV sau -
Sales1.csv
Sales2.csv
Sales3.csv
Lúc đầu, đặt đường dẫn để tham gia nhiều tệp. Chúng tôi có tất cả các tệp CSV sẽ được hợp nhất trên máy tính để bàn -
files = os.path.join["C:\Users\amit_\Desktop\", "sales*.csv"]
Tiếp theo, sử dụng GLOB để trả về danh sách các tệp được hợp nhất -
files = glob.glob[files]
Thí dụ
Sau đây là mã -
extension = 'csv'
all_filenames = [i for i in glob.glob['*.{}'.format[extension]]]
0Đầu ra
Điều này sẽ tạo ra những điều sau -
extension = 'csv'
all_filenames = [i for i in glob.glob['*.{}'.format[extension]]]
1
Cập nhật vào ngày 04 tháng 10 năm 2021 07:12:14
- Câu hỏi và câu trả lời liên quan
- Làm thế nào để hợp nhất nhiều tệp CSV thành một DataFrame Pandas?
- Python - Đọc tất cả các tệp CSV trong một thư mục trong gấu trúc?
- Python - Cách viết Pandas DataFrame vào tệp CSV
- Viết một tệp dữ liệu gấu trúc vào tệp CSV
- Python - hợp nhất hai gấu trúc DataFrame
- Python Pandas- Tạo nhiều tệp CSV từ tệp CSV hiện có
- Python - Cách hợp nhất tất cả các tệp Excel trong thư mục
- Làm thế nào để hợp nhất nhiều tệp vào một tệp mới bằng Python?
- Làm thế nào để xử lý các tệp CSV lớn với gấu trúc?
- Làm thế nào để đọc tất cả các tệp Excel trong một thư mục dưới dạng gấu trúc DataFrame?
- Python - hợp nhất DataFrame với tham gia bên ngoài
- Python - hợp nhất DataFrame với tham gia bên trong
- Python Pandas - Merge DataFrame với giá trị chỉ báo
- Hợp nhất gấu trúc DataFrame với một cột chung
- Python - Merge Pandas DataFrame với tham gia bên ngoài bên phải