Hướng dẫn append two csv files python - nối hai tệp csv python

Ok tôi đã đọc một số chủ đề ở đây trên Stack Overflow. Tôi nghĩ rằng điều này sẽ khá dễ dàng đối với tôi nhưng tôi thấy rằng tôi vẫn không nắm bắt được Python rất tốt. Tôi đã thử ví dụ nằm ở cách kết hợp 2 tệp CSV với giá trị cột chung, nhưng cả hai tệp đều có số dòng khác nhau và điều đó rất hữu ích nhưng tôi vẫn không có kết quả mà tôi hy vọng sẽ đạt được.

Về cơ bản tôi có 2 tệp CSV với cột đầu tiên chung. Tôi muốn hợp nhất 2. tức là.

filea.csv

title,stage,jan,feb
darn,3.001,0.421,0.532
ok,2.829,1.036,0.751
three,1.115,1.146,2.921

fileb.csv

title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956

output.csv [không phải cái tôi đang nhận được nhưng những gì tôi muốn]

title,stage,jan,feb,mar,apr,may,jun
darn,3.001,0.421,0.532,0.631,1.321,0.951,1.751
ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216
three,1.115,1.146,2.921,0.285,1.283,0.924,956

đầu ra.csv [đầu ra mà tôi thực sự có]

title,feb,may
ok,0.751,2.456
three,2.921,0.924
darn,0.532,0.951

Mã tôi đang thử:

'''
testing merging of 2 csv files
'''
import csv
import array
import os

with open['Z:\\Desktop\\test\\filea.csv'] as f:
    r = csv.reader[f, delimiter=',']
    dict1 = {row[0]: row[3] for row in r}

with open['Z:\\Desktop\\test\\fileb.csv'] as f:
    r = csv.reader[f, delimiter=',']
    #dict2 = {row[0]: row[3] for row in r}
    dict2 = {row[0:3] for row in r}

print str[dict1]
print str[dict2]

keys = set[dict1.keys[] + dict2.keys[]]
with open['Z:\\Desktop\\test\\output.csv', 'wb'] as f:
    w = csv.writer[f, delimiter=',']
    w.writerows[[[key, dict1.get[key, "''"], dict2.get[key, "''"]] for key in keys]]

Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Vì khóa học này đang được phát hành dần dần, bất cứ khi nào một bài viết và video mới được phát hành, sau khi ban đầu nhân bản kho lưu trữ. & NBSP; bạn sẽ cần chạy lệnh này trong dòng lệnh / thiết bị đầu cuối của bạn [từ thư mục gốc của khóa học]:You will need to run this command within your command line / terminal [from the root directory of the course]:

git pull origin master

Điều này sẽ kéo bất kỳ thay đổi gần đây nào đã được thực hiện trên phiên bản GitHub.com của khóa học và sẽ cho phép bạn dễ dàng nhận được nội dung mới khi được thêm vào.

Kết quả học tập

  • Để tìm hiểu phương thức pd.concat [] là gì và cách thức hoạt động của nó
  • Tìm hiểu cách kết hợp nhiều tệp CSV bằng Pandas

Trước hết, hãy để nói rằng chúng tôi có các tệp 5, 10 hoặc 100 .csv. Kết hợp tất cả những điều này bằng tay có thể cực kỳ mệt mỏi và chắc chắn xứng đáng được tự động hóa. Do đó, trong bài tập ngày hôm nay, & nbsp; chúng tôi sẽ kết hợp nhiều tệp CSV chỉ trong 8 dòng mã.we’ll combine multiple csv files within only 8 lines of code.

Đối với hướng dẫn này, & nbsp; Tôi đã chuẩn bị 5 trang hàng đầu .CSV Báo cáo từ AHREFS & NBSP; có thể tìm thấy trong thư mục sau:


'data/pbpython.com-top-pages-by-traffic-subdomains-US-17-May-2020_20-24-30-2c4e06e2ea39cce8b2f514e24c929e51.csv'
'data/machinelearningmastery.com-top-pages-by-traffic-subdomains-US-17-May-2020_20-25-38-b4088b6c6c987653748b10c0543a5713.csv'

Một trong những vấn đề với việc tự động phát hiện các tệp CSV là & nbsp; tên được tạo động. & Nbsp; do đó chúng tôi sẽ sử dụng tên mở rộng tệp .csv và gói python được gọi là glob để tự động phát hiện tất cả các tệp kết thúc bằng tên .csv trong một thư mục làm việc cụ thể.the names are dynamically generated. Therefore we will be using the .csv file extension name and a python package called glob to automatically detect all of the files ending with a .csv name within a specific working directory.

Nhập gói và đặt thư mục làm việc

Bạn sẽ cần phải thay đổi thư mục/thư mục của bạn thành thư mục cụ thể của bạn.specific directory.

import os
import glob
import pandas as pd
# os.chdir["/directory"]

Bằng cách viết PWD trong dòng lệnh, chúng ta có thể xác định đường dẫn tệp chính xác mà các tệp .csv trên trang AHREFS này được đặt tại:


pwd
/Users/jamesphoenix/Desktop/Imran_And_James_Projects/Python_For_SEO/2_bulk_csv_operations/data

Bây giờ, chúng ta hãy chuyển sang thư mục làm việc mong muốn của chúng tôi, nơi các tệp CSV:

os.chdir["/Users/jamesphoenix/Desktop/Imran_And_James_Projects/Python_For_SEO/2_bulk_csv_operations/data"]

Bây giờ, hãy để chạy! LS và! PWD chỉ để cho thấy rằng chúng tôi đã thay đổi thư mục:

title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
0

Pro-tip: Sử dụng! Trước lệnh Linux cho phép bạn chạy các lệnh Unix/Linux trong tệp Notebook Jupyter!

title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
1
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
2

Bước 2: Sử dụng toàn cầu để phù hợp với mẫu .csv,

Bây giờ chúng tôi sẽ khớp với mẫu tệp [‘.csv,] trong tất cả các tệp nằm trong & nbsp; thư mục làm việc hiện tại.current working directory.

title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
3
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
4

Bước 3: Hãy để kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV

Trong mã bên dưới, chúng tôi sẽ đọc tất cả các CSV và sau đó sẽ sử dụng phương thức pd.concat [] để xếp từng dataFrame lên trên một phương thức khác.

Nhưng trước khi chúng tôi làm điều đó, hãy để đảm bảo rằng & nbsp; chúng tôi có thể nhận được một kết quả trong khung dữ liệu gấu trúc bằng cách thêm mã hóa phù hợp:we can get one result within a pandas dataframe by adding the appropriate encoding:

  • UTF-16 [đây là loại mã hóa cụ thể].
  • \ t [dữ liệu phân định tab].
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
5
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
6
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
7
title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
8

Bây giờ, hãy để chia nhỏ những gì dòng mã trên, trước hết chúng tôi lặp qua tất cả các tên tệp và gán cho chúng từng cái một cho biến F. Mỗi tệp CSV sau đó được đọc và chuyển đổi thành một DataFrame Pandas với:

title,mar,apr,may,jun,
darn,0.631,1.321,0.951,1.751
ok,1.001,0.247,2.456,0.3216
three,0.285,1.283,0.924,956
9

Sau đó, chúng tôi kết hợp tất cả các khung dữ liệu với nhau và xếp chúng lên nhau bằng cách sử dụng:

title,stage,jan,feb,mar,apr,may,jun
darn,3.001,0.421,0.532,0.631,1.321,0.951,1.751
ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216
three,1.115,1.146,2.921,0.285,1.283,0.924,956
0

Đó là nó, trong 8 dòng mã mà bạn có thể dễ dàng kết hợp bao nhiêu tệp .csv tùy thích!

  • Hãy nhớ rằng tất cả các tệp CSV & nbsp; phải có cùng một cột nếu không bạn sẽ không thể kết hợp chúng một cách hiệu quả!must have the same columns otherwise you will not be able to effectively concatenate them!

Bước 4 Lưu DataFrame mới của bạn vào CSV

Bây giờ, hãy sử dụng & nbsp; os.chdir [‘..,] & nbsp; để đi lên một thư mục làm việc trước khi lưu dữ liệu của chúng tôi:os.chdir[‘..’] to go up one working directory before saving our data:

title,stage,jan,feb,mar,apr,may,jun
darn,3.001,0.421,0.532,0.631,1.321,0.951,1.751
ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216
three,1.115,1.146,2.921,0.285,1.283,0.924,956
1
title,stage,jan,feb,mar,apr,may,jun
darn,3.001,0.421,0.532,0.631,1.321,0.951,1.751
ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216
three,1.115,1.146,2.921,0.285,1.283,0.924,956
2
title,stage,jan,feb,mar,apr,may,jun
darn,3.001,0.421,0.532,0.631,1.321,0.951,1.751
ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216
three,1.115,1.146,2.921,0.285,1.283,0.924,956
3

Phản ứng của bạn là gì?

Trang web này chứa các liên kết đến một số trang web của bên thứ ba được mô tả là liên kết liên kết. Các liên kết liên kết này cho phép chúng tôi có được một khoản hoa hồng nhỏ khi bạn nhấp và mua sản phẩm trên các trang web đó [nó không tốn kém gì thêm!]. AttackData.com là người tham gia Chương trình Associates Associates của Amazon Services, một chương trình quảng cáo liên kết được thiết kế để cung cấp phương tiện cho chủ sở hữu trang web để kiếm phí quảng cáo bằng cách quảng cáo và liên kết với Amazon và bất kỳ trang web nào khác có thể liên kết với chương trình AMAZON Service LLC Associates .

Làm cách nào để nối nhiều tệp CSV?

Để kết hợp nhiều tệp CSV vào một sổ làm việc excel, đây là các bước bạn cần tuân theo:..
Đặt tất cả các tệp CSV của bạn vào một thư mục. ....
Trên tab Dữ liệu, trong nhóm dữ liệu GET & Biến đổi, nhấp vào Nhận dữ liệu> từ tệp> từ thư mục ..
Duyệt cho thư mục mà bạn đã đặt các tệp CSV và nhấp vào mở ..

Làm cách nào để nối vào tệp CSV trong Python?

Nếu bạn cần nối [các] hàng vào tệp CSV, hãy thay thế chế độ ghi [w] bằng chế độ nối [a] và bỏ qua ghi tên cột dưới dạng một hàng [writer.writerow [cột_name]].replace the write mode [ w ] with append mode [ a ] and skip writing the column names as a row [ writer. writerow[column_name] ].

Làm cách nào để hợp nhất hai tệp CSV trong gấu trúc?

Từng bước để hợp nhất hai tệp CSV..
Nhập Gandas dưới dạng PD ..
csv1 = pd.Read_csv ["data/doanh thu.csv"] csv1.head [].
csv2 = pd.Read_csv ["data/cquityList.csv"] csv2.ead [].
SYNGED_DATA = CSV1.merGE [CSV2, ON = ["Mã bảo mật"]] Merged_Data.head [].
data1 = pd.read_csv ["data/sheet1.csv"] data1.head [].

Chúng ta có thể nối vào tệp CSV không?

Lắp đặt DataFrame có nghĩa là thêm các hàng dữ liệu vào các tệp đã có.Để thêm một hàng DataFrame khôn ngoan vào tệp CSV hiện có, chúng tôi có thể viết DataFrame vào tệp CSV ở chế độ nối bằng tham số A sử dụng hàm pandas to_csv [].we can write the dataframe to the CSV file in append mode by the parameter a using the pandas to_csv[] function.

Bài Viết Liên Quan

Chủ Đề