Trong hướng dẫn này, tôi sẽ chỉ cho bạn một số cách để hợp nhất/kết hợp nhiều tệp CSV thành một tệp duy nhất bằng cách sử dụng Python [nó sẽ hoạt động tốt với văn bản và các tệp khác]. Sẽ có phần thưởng - cách hợp nhất nhiều tệp CSV với một lớp lót cho Linux và Windows. Cuối cùng, với một vài dòng mã, bạn sẽ có thể kết hợp hàng trăm tệp với toàn quyền kiểm soát dữ liệu đã tải - bạn có thể chuyển đổi tất cả các tệp CSV thành Khung dữ liệu Pandas và sau đó đánh dấu từng hàng mà tệp CSV sẽ đến
Ghi chú. Đối với các tệp JSON, hãy kiểm tra. Cách hợp nhất nhiều tệp JSON vào Pandas DataFrame
tập tin ví dụ
- dữ liệu_201901. csv
- dữ liệu_201902. csv
- dữ liệu_201903. csv
sản lượng dự kiến
sáp nhập. csv
Video hướng dẫn
Notebook với tất cả các ví dụ. Kho lưu trữ Github của Softhint
Các bước để hợp nhất nhiều tệp CSV [giống hệt nhau] với Python
Ghi chú. mà chúng tôi giả định - tất cả các tệp có cùng số cột và thông tin giống hệt nhau bên trong
Ví dụ mã ngắn - nối tất cả các tệp CSV trong thư mục Tải xuống
import pandas as pd
import glob
path = r'~/Downloads'
all_files = glob.glob[path + "/*.csv"]
all_files
Bước 1. Nhập mô-đun và đặt thư mục làm việc
Đầu tiên chúng ta sẽ bắt đầu với việc tải các mô-đun cần thiết cho chương trình và chọn thư mục làm việc
import os, glob
import pandas as pd
path = "/home/user/data/"
Bước 2. Khớp các tệp CSV theo mẫu
Bước tiếp theo là thu thập tất cả các tệp cần thiết để được kết hợp. Điều này sẽ được thực hiện bởi
all_files = glob.glob[os.path.join[path, "data_*.csv"]]
Mã tiếp theo.
import os, glob
import pandas as pd
path = "/home/user/data/"
4 tập tin chỉ khớp- bắt đầu bằng
5import os, glob import pandas as pd path = "/home/user/data/"
- với phần mở rộng tập tin
6import os, glob import pandas as pd path = "/home/user/data/"
Bạn có thể tùy chỉnh lựa chọn cho nhu cầu của mình, lưu ý rằng đối sánh regex được sử dụng
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
Bước cuối cùng là tải tất cả các tệp đã chọn vào một DataFrame duy nhất và chuyển đổi lại thành csv nếu cần
df_merged = [pd.read_csv[f, sep=','] for f in all_files]
df_merged = pd.concat[df_from_each_file, ignore_index=True]
df_merged.to_csv[ "merged.csv"]
Lưu ý rằng bạn có thể thay đổi dấu phân cách bằng cách.
import os, glob
import pandas as pd
path = "/home/user/data/"
7 hoặc thay đổi tiêu đề và hàng sẽ được tảiBạn có thể tìm hiểu thêm về cách chuyển đổi DataFrame thành tệp CSV tại đây. gấu trúc. Khung dữ liệu. to_csv
Mã đầy đủ
Dưới đây, bạn có thể tìm thấy mã đầy đủ có thể được sử dụng để hợp nhất nhiều tệp CSV
________số 8_______Các bước để hợp nhất nhiều tệp CSV [giống hệt nhau] với Python bằng dấu vết
Bây giờ, giả sử rằng bạn muốn hợp nhất nhiều tệp CSV vào một DataFrame duy nhất nhưng cũng có một cột đại diện cho hàng sắp đến từ tệp nào. Cái gì đó như
hàngcolcol2file1ABdata_201901. csv2CDdata_201902. csvĐiều này có thể đạt được rất dễ dàng bằng cách thay đổi mã nhỏ ở trên
import os, glob
import pandas as pd
path = "/home/user/data/"
all_files = glob.glob[os.path.join[path, "*.csv"]]
all_df = []
for f in all_files:
df = pd.read_csv[f, sep=',']
df['file'] = f.split['/'][-1]
all_df.append[df]
merged_df = pd.concat[all_df, ignore_index=True, sort=True]
Trong ví dụ này, chúng tôi lặp lại tất cả các tệp đã chọn, sau đó chúng tôi trích xuất tên tệp và tạo một cột chứa tên này
Kết hợp nhiều tệp CSV khi các cột khác nhau
Đôi khi, các tệp CSV sẽ khác nhau đối với một số cột hoặc chúng có thể giống nhau chỉ theo thứ tự sai. Trong ví dụ này, bạn có thể tìm thấy cách kết hợp các tệp CSV không có cấu trúc giống hệt nhau
import os, glob
import pandas as pd
path = "/home/user/data/"
all_files = glob.glob[os.path.join[path, "*.csv"]]
all_df = []
for f in all_files:
df = pd.read_csv[f, sep=',']
f['file'] = f.split['/'][-1]
all_df.append[df]
merged_df = pd.concat[all_df, ignore_index=True, , sort=True]
Pandas sẽ căn chỉnh dữ liệu theo phương pháp này.
import os, glob
import pandas as pd
path = "/home/user/data/"
8. Trong trường hợp thiếu cột, các hàng của tệp CSV nhất định sẽ chứa các giá trị NaNrowcolcol2col_201901file1ABAAdata_201901. csv2CDNaNdata_201902. csvNếu bạn cần so sánh hai tệp csv để tìm sự khác biệt với Python và Pandas, bạn có thể kiểm tra. Python Pandas So sánh hai tệp CSV dựa trên một cột
Tìm hiểu thêm về pandas concat. gấu trúc. concat
Thưởng. Hợp nhất nhiều tệp với Windows/Linux
Linux
Để biết thêm chi tiết bạn có thể kiểm tra. Cách hợp nhất nhiều tệp CSV trong Linux Mint
Đôi khi, chỉ cần sử dụng các công cụ có sẵn từ hệ điều hành của bạn hoặc trong trường hợp tệp lớn là đủ. Sử dụng python để nối nhiều tệp lớn có thể là một thách thức. Trong trường hợp này cho Linux, nó có thể được sử dụng
sed 1d data_*.csv > merged.csv
Trong trường hợp này, chúng tôi đang làm việc trong thư mục hiện tại bằng cách khớp tất cả các tệp bắt đầu bằng
import os, glob
import pandas as pd
path = "/home/user/data/"
5. Điều này rất quan trọng vì nếu bạn cố gắng thực hiện một cái gì đó nhưsed 1d *.csv > merged.csv
Bạn cũng sẽ cố hợp nhất tệp đầu ra mới, điều này có thể gây ra sự cố. Một lưu ý quan trọng khác là điều này sẽ bỏ qua các dòng đầu tiên hoặc tiêu đề của mỗi tệp. Để bao gồm các tiêu đề bạn có thể làm
sed -n 1p data_1.csv > merged.csv
sed 1d data_*.csv >> merged.csv
Nếu các lệnh trên không hiệu quả với bạn thì bạn có thể thử với hai lệnh tiếp theo. Cái đầu tiên sẽ hợp nhất tất cả các tệp csv nhưng gặp sự cố nếu các tệp kết thúc mà không có dòng mới