Trong khi sử dụng Python và Pandas, tôi đang chạy một tập lệnh phân tích các tệp TXT cho điểm số từ và điểm số Lexile. Tôi có thể chạy thành công kịch bản và viết cho CSV. Tuy nhiên, đầu ra của tôi mang lại các giá trị bất ngờ và tôi gặp khó khăn khi viết dữ liệu vào cột cụ thể.
Đây là mã:
import pandas as pd import textstat import csv header = ["word_count", "flech"] with open('data.csv', 'w', encoding='UTF8') as f: writer = csv.writer(f) writer.writerow(header) for text_number in range(0, 2): f = open(f'\TXTs\text_{text_number}.txt', 'r') if f.mode == 'r': contents = f.read() text_data = (contents) word_count = textstat.lexicon_count(text_data, removepunct=True) flech = textstat.flesch_kincaid_grade(text_data) wc = pd.DataFrame([word_count]) fl = pd.DataFrame([flech]) def wc_count(): wc.to_csv('output.csv', mode="a", header="word_count", index=False) def fl_count(): fl.to_csv('output.csv', mode="a", header="flech", index=False) wc_count() fl_count()Tôi muốn đầu ra trông như thế này, với các giá trị word_count, flech 0 2 0 -3.1 0 271 0 13 5 & word_count, flech 0 2 0 -3.1 0 271 0 13 6 trong cột "Word_Count" và word_count, flech 0 2 0 -3.1 0 271 0 13 7 và word_count, flech 0 2 0 -3.1 0 271 0 13 8 trong cột "frech":
word_count, flech 2, -3.1 271, 13Tuy nhiên, đầu ra được tạo ra trông như thế này:
word_count, flech 0 2 0 -3.1 0 271 0 13Rõ ràng, tôi đã gặp một số vấn đề với đầu ra của mình. Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao.
Ví dụ hoàn chỉnh như sau, csv.reader and csv.DictWriter classes. A part from appending the columns we will also discuss how to insert columns in between other columns of the existing CSV file. Trong bài viết này, chúng tôi sẽ thảo luận về cách thêm một cột vào tệp CSV hiện có bằng các lớp CSV.Reader và CSV.DictWriter. Một phần từ việc thêm các cột, chúng tôi cũng sẽ thảo luận về cách chèn các cột ở giữa các cột khác của tệp CSV hiện có.we have a csv module that provides different classes for reading and writing csv files. All the reading and writing operations provided by these classes are row specific. But we can build our logic on top of these functions to add or append columns in a csv file. Let’s see how to do that, Thêm một cột có cùng giá trị vào tệp CSV hiện cóinput.csv and its contents are, Giả sử chúng ta có một tệp CSV, tức là input.csv và nội dung của nó là,‘Some Text‘. Bây giờ chúng tôi muốn thêm một cột trong tệp CSV này và tất cả các mục trong cột này sẽ chứa cùng một giá trị, tức là một số văn bản. Hãy để xem cách làm điều đó,Whereas, csv.writer
class in python’s csv module provides a mechanism to write a list as a row in the csv file. Lớp CSV.Reader trong mô -đun CSV của Python cung cấp một cơ chế để đọc từng hàng trong tệp CSV dưới dạng danh sách.Không có chức năng trực tiếp trong Python để thêm một cột trong tệp CSV. Mặc dù trong Python, chúng tôi có một mô -đun CSV cung cấp các lớp khác nhau để đọc và viết các tệp CSV. hoặc nối các cột trong tệp CSV. Hãy để xem cách làm điều đó,
Quảng cáo
- Các bước sẽ được nối một cột trong tệp CSV,
- Mở tệp ‘input.csv ở chế độ đọc và tạo đối tượng CSV.Reader cho tệp CSV này
- Mở tệp ’unput.csv ở chế độ ghi và tạo đối tượng CSV.Writer cho tệp CSV này
- Sử dụng đối tượng Reader, hãy đọc dòng tệp ‘Input.csv, từng dòng
- Đối với mỗi hàng (đọc dưới dạng danh sách), hãy nối văn bản mặc định trong danh sách.
- Đóng cả tệp input.csv và đầu ra.csv.
Mã như sau,
Nó nối thêm cột trong nội dung của Input.csv và lưu các thay đổi dưới dạng tệp output_1.csv. Nội dung của tệp Output_1.csv là,Contents of output_1.csv file are,
21,Mark,Python,London,Morning,Some Text 22,John,Python,Tokyo,Evening,Some Text 23,Sam,Python,Paris,Morning,Some Text 24,Ritika,Python,Delhi,Evening,Some Text 25,Shaun,Python,Colombo,Morning,Some TextThêm cột trong CSV dựa trên logic tùy chỉnh
Trong ví dụ trên, chúng tôi đã thêm một cột có cùng một giá trị trong tệp CSV. Nhưng có thể có các kịch bản khác, như,
- Cách thêm cột trong tệp CSV dựa trên một số logic khác, & nbsp; trong đó mỗi giá trị trong cột là & nbsp; khác nhau ?
- Làm thế nào để thêm danh sách dưới dạng cột trong tệp CSV?
- Làm thế nào để thêm cột trong tệp CSV với tiêu đề?
- Cách chèn các cột ở giữa các cột khác của tệp CSV.
Chúng tôi có thể thay đổi mã nhỏ trong ví dụ trên, cho mỗi kịch bản của chúng tôi nhưng điều đó sẽ là quá nhiều sao chép mã.
Vì vậy, hãy tạo một hàm chung sẽ thực hiện phần phổ biến nhất để thêm một cột trong tệp CSV, tức là.
Hàm này có 3 đối số,
- & nbsp; & nbsp; & nbsp; & nbsp;input_file: file path / name of the input csv file, it will read the contents of this csv file
- & nbsp; & nbsp; & nbsp; & nbsp; output_file: đường dẫn / tên của tệp CSV đầu ra, nó sẽ viết nội dung sửa đổi trong tệp CSV nàyoutput_file: file path / name of the output csv file, it will write modified contents in this csv file
- & nbsp; & nbsp; & nbsp; & nbsp; transform_row: một chức năng gọi lại, nhận danh sách và sửa đổi danh sách đótransform_row: A callback function, that receives a list and modifies that list
Hàm này lặp lại trên mỗi hàng của input_file và đọc nội dung của mỗi hàng dưới dạng danh sách. Sau đó, nó chuyển & nbsp; liệt kê vào hàm Transform_row () để sửa đổi. Ở bên cạnh cuộc gọi lại này, chúng tôi có thể sửa đổi danh sách như thêm một mục nhập trong đó. & NBSP; sau đó nó lưu hàng / danh sách sửa đổi trong output_file.that list into a transform_row() function for modification. In side this callback we can modify the list like add an entry in it. Then it saves the modified row / list in the output_file.
Trong đối số Transform_row của hàm này, chúng tôi sẽ chủ yếu vượt qua chức năng Lambda trong các ví dụ của chúng tôi.
Vì vậy, hãy để sử dụng chức năng này để giải quyết các vấn đề của chúng tôi,
Thêm một cột có cùng giá trị vào tệp CSV hiện có bằng Chức năng chung & Lambda
Chúng tôi đã làm tương tự trong ví dụ đầu tiên của chúng tôi, nhưng hãy để Lừa làm lại bằng cách sử dụng chức năng chung của chúng tôi và một lambda, tức là.
Nó nối thêm cột trong nội dung của Input.csv và lưu các thay đổi dưới dạng tệp output_2.csv. Nội dung của tệp Output_2.csv là,input.csv and saved the changes as output_2.csv file. Contents of output_2.csv file are,
21,Mark,Python,London,Morning,Some Text 22,John,Python,Tokyo,Evening,Some Text 23,Sam,Python,Paris,Morning,Some Text 24,Ritika,Python,Delhi,Evening,Some Text 25,Shaun,Python,Colombo,Morning,Some TextThêm một cột vào tệp CSV hiện có, dựa trên các giá trị từ các cột khác
Hãy để nối một cột trong tệp input.csv bằng cách hợp nhất giá trị của các cột thứ nhất và thứ hai, tức là.
Trong hàm Lambda, chúng tôi đã nhận được từng hàng dưới dạng danh sách và số dòng. Sau đó, nó đã thêm một giá trị trong danh sách và giá trị là sự hợp nhất của giá trị thứ nhất và thứ hai của danh sách.
Nó đã thêm cột trong nội dung của Input.csv bằng cách hợp nhất giá trị của cột thứ nhất và thứ hai và sau đó lưu các thay đổi dưới dạng tệp output_3.csv.and then saved the changes as output_3.csv file.
Nội dung của tệp output_3.csv là,
Thêm danh sách làm cột vào tệp CSV hiện có
Giả sử chúng ta có một danh sách chuỗi, tức là.
Hãy để thêm danh sách các chuỗi này làm cột cuối cùng trong tệp input.csv và lưu nội dung của nó dưới dạng output_4.csv,
word_count, flech 2, -3.1 271, 13 2Trong hàm Lambda, chúng tôi đã nhận được từng hàng dưới dạng danh sách và số dòng. Sau đó, nó đã thêm một giá trị trong danh sách và giá trị là một mục từ list_of_str của chúng tôi tại index & nbsp; line_num - 1.list_of_str at index line_num – 1.
Do đó, tất cả các mục trong list_of_strare được thêm vào làm cột trong CSV.list_of_strare added as a column in the csv.
Nội dung của tệp output_4.csv là,
Chèn một cột là cột thứ hai có cùng giá trị vào CSV hiện có
Trong tất cả các ví dụ trên, chúng tôi đã thêm một cột ở cuối tệp CSV, tức là cột cuối cùng. Điều gì sẽ xảy ra nếu chúng ta muốn chèn một cột & nbsp; giữa các cột khác của tệp CSV? Hãy để xem cách làm điều đó,column in between other columns of the csv file ? Let’s see how to do that,
Chèn một cột vào tệp input.csv làm cột thứ hai và lưu nội dung của nó vào tệp output_5.csv,
Nội dung của tệp Output_5.csv là,
word_count, flech 2, -3.1 271, 13 5Trong hàm Lambda, chúng tôi đã nhận được từng hàng dưới dạng danh sách và số dòng. Sau đó, nó chèn giá trị ở vị trí cuối danh sách.
Thêm một cột có cùng giá trị vào tệp CSV hiện có với tiêu đề
Trong tất cả các ví dụ trên, chúng tôi đã thêm cột trong một tệp CSV mà không có tiêu đề nào. Nếu tệp CSV của chúng tôi cũng có tiêu đề, & nbsp;If our csv file has a header too,
Sau đó, hãy để xem cách thêm một cột mới với tiêu đề và giá trị, tức là.
word_count, flech 2, -3.1 271, 13 7Trong hàm Lambda, nó nhận được hàng dưới dạng danh sách và số dòng của nó dưới dạng đối số. Sau đó kiểm tra xem line_num là 1, thì nó có nghĩa là danh sách này chứa tên cột và nó thêm tên của cột trong đó. Trong khi đó, nếu line_num không phải là 1 thì nó có nghĩa là một hàng tệp CSV bình thường của nó, nếu thêm mục nhập của cột mới trong đó.line_num is 1, then it means this list contains column names and it adds the name of column in it. Whereas, if line_num is not 1 then it means its a normal row of csv file, if adds the entry of new column in it.
Vì vậy, nó đã thêm một cột mới với các giá trị ‘giống nhau_text và tiêu đề‘ địa chỉ. Sau đó lưu nội dung đó dưới dạng output_6.csv,
Nội dung của tệp output_6.csv là,
Sử dụng DicTreader Dictwriter để thêm một cột trong tệp CSV hiện có
Mô -đun CSV của Python cung cấp hai lớp khác để đọc và viết nội dung trong tệp CSV, tức là DicTreader & Dictwriter. & NBSP; Nó thực hiện tất cả các hoạt động bằng cách sử dụng từ điển thay vì danh sách.It performs all the operations using dictionaries instead of lists.
Chúng tôi đã tạo một chức năng riêng biệt để thêm cột vào tệp CSV, tương tự như trước đó nhưng nó sử dụng lớp dictreader & nbsp; & nbsp; và dictwriter thay thế, thay vào đó, thay vào đó and DictWriter class instead,
Trong chức năng này, chúng ta cần vượt qua một cuộc gọi lại bổ sung tansform_column_names, nó nhận được danh sách các tên cột và & nbsp; chúng ta có thể sửa đổi nó dựa trên ý định của chúng ta.we can modify that based on our intent.
Hãy để xem cách sử dụng chức năng này để giải quyết các vấn đề của chúng tôi,
Sử dụng DicTreader Dictwriter để thêm một cột có cùng giá trị vào CSV hiện có
word_count, flech 0 2 0 -3.1 0 271 0 13 0Nội dung của tệp output_7.csv là,
word_count, flech 2, -3.1 271, 13 8Sử dụng DicTreader Dictwriter để chèn một cột làm cột thứ hai trong CSV CSV
word_count, flech 0 2 0 -3.1 0 271 0 13 2Nội dung của tệp output_7.csv là,
word_count, flech 0 2 0 -3.1 0 271 0 13 3Sử dụng DicTreader Dictwriter để chèn một cột làm cột thứ hai trong CSV CSV
word_count, flech 0 2 0 -3.1 0 271 0 13 4