Hướng dẫn how to convert text to number in excel using python - cách chuyển chữ thành số trong excel bằng python

Đầu vào là một bảng văn bản - một số cột là số và một số văn bản. Tôi có tập lệnh Python để chuyển đổi tệp văn bản này thành XLSX. Sau khi mở trong Excel hoặc Libre, tất cả các trường là văn bản. Có tùy chọn nào để chuyển đổi một số cột thành số không?

cat script.py:

import csv
import sys
from xlsxwriter.workbook import Workbook

# Add some command-line logic to read the file names.
tsv_file = sys.argv[1]
xlsx_file = sys.argv[2]

# Create an XlsxWriter workbook object and add a worksheet.
workbook = Workbook(xlsx_file)
worksheet = workbook.add_worksheet()

# Create a TSV file reader.
tsv_reader = csv.reader(open(tsv_file, 'rb'), delimiter='\t')

# Read the row data from the TSV file and write it to the XLSX file.
for row, data in enumerate(tsv_reader):
    worksheet.write_row(row, 0, data)

# Close the XLSX file.
workbook.close()

chạy script:

python script.py in.txt out.xlsx

Tôi muốn thay đổi tập lệnh để chuyển đổi một số cột thành văn bản và một số thành số và giữ định dạng XLSX. Có ý tưởng nào để làm việc này không?

Khi được hỏi ngày 10 tháng 5 năm 2017 lúc 20:10May 10, 2017 at 20:10

Hướng dẫn how to convert text to number in excel using python - cách chuyển chữ thành số trong excel bằng python

Bạn có thể sử dụng tùy chọn trình xây dựng

python script.py in.txt out.xlsx
2 XLSXWriter. Từ các tài liệu:

python script.py in.txt out.xlsx
2: Kích hoạt phương thức
python script.py in.txt out.xlsx
4 để chuyển đổi các chuỗi thành các số, nếu có thể, sử dụng
python script.py in.txt out.xlsx
5 để tránh cảnh báo Excel về các số được lưu trữ dưới dạng văn bản. Mặc định này sai. Để kích hoạt tùy chọn này sử dụng:

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})

Example:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx', {'strings_to_numbers': True})
worksheet = workbook.add_worksheet()

worksheet.write(0, 0, 'Hello')
worksheet.write(1, 0, '123') # Write this string as a number.

workbook.close()

Output:

Hướng dẫn how to convert text to number in excel using python - cách chuyển chữ thành số trong excel bằng python

Đã trả lời ngày 11 tháng 5 năm 2017 lúc 7:27May 11, 2017 at 7:27

JMCnamarajmcnamarajmcnamara

Phim huy hiệu vàng 35,4k66 gold badges84 silver badges97 bronze badges

6

Theo tài liệu, bạn cần thêm một định dạng số và sử dụng nó khi bạn viết các ô cần định dạng số.

# Add a number format for cells with money.
money = workbook.add_format({'num_format': '$#,##0'})

...

worksheet.write(row_idx, col_idx, your_value, money)

Xem Hướng dẫn 2: Thêm định dạng vào tệp XLSX

Đã trả lời ngày 10 tháng 5 năm 2017 lúc 21:01May 10, 2017 at 21:01

Hướng dẫn how to convert text to number in excel using python - cách chuyển chữ thành số trong excel bằng python

Laurent Laportelaurent LaporteLaurent LAPORTE

20,9K5 Huy hiệu vàng55 Huy hiệu bạc97 Huy hiệu Đồng5 gold badges55 silver badges97 bronze badges

Trong hướng dẫn ngắn này, chúng tôi sẽ học cách chuyển đổi dữ liệu văn bản hoặc chuỗi thành số trong gấu trúc.

Chúng tôi sẽ xem xét hai phương thức tích hợp gấu trúc để chuyển đổi chuỗi thành số. Cũng như làm thế nào để xử lý một số trường hợp đặc biệt khi hai phương pháp này không hoạt động.

Chạy mã sau để tạo DataFrame mẫu. Mỗi cột chứa văn bản/chuỗi và chúng tôi sẽ chuyển đổi chúng thành các số bằng các kỹ thuật khác nhau. Chúng tôi sử dụng danh sách hiểu để tạo một số danh sách các chuỗi, sau đó đưa chúng vào một khung dữ liệu.

import pandas as pd
import numpy as np

l1 = [f'10{i}' for i in range(10,30)]
l2 = [f'10{i}.{i}' for i in range(10,30)]
l3 = [f'1.0{i}.{i}' for i in range(10, 30)]
l4 = [f'1,0{i}' for i in range(10, 30)]
l5 = [f'$1,0{i}' for i in range(10, 30)]
l6 = [f'{i}%' for i in range(20)]
l7 = [f'{i}.{i}%' for i in range(20)]
l8 = [f'10{i}' if i%2 == 0 else 'asdf' for i in range(10,30)]
l9 = [f'$1,0{i}' if i%2 == 0 else 'asdf' for i in range(10,30)]

df = pd.DataFrame({'l1':l1,
                   'l2':l2,
                   'l3':l3,
                   'l4':l4,
                   'l5':l5,
                   'l6':l6,
                   'l7':l7,
                   'l8':l8,
                   'l9':l9,
    })

Hãy xem qua 5 hàng đầu tiên của DataFrame bằng phương thức

python script.py in.txt out.xlsx
6. Hãy nhớ rằng tất cả các giá trị trong DataFrame là kiểu dữ liệu chuỗi.
python script.py in.txt out.xlsx
6
method. Keep in mind that all the values in the dataframe are string data type.

>>> df.head()
     l1       l2        l3     l4      l5  l6    l7    l8      l9
0  1010  1010.10  1.010.10  1,010  $1,010  0%  0.0%  1010  $1,010
1  1011  1011.11  1.011.11  1,011  $1,011  1%  1.1%  asdf    asdf
2  1012  1012.12  1.012.12  1,012  $1,012  2%  2.2%  1012  $1,012
3  1013  1013.13  1.013.13  1,013  $1,013  3%  3.3%  asdf    asdf
4  1014  1014.14  1.014.14  1,014  $1,014  4%  4.4%  1014  $1,014

Phương thức DF.Asype ()

Đây có lẽ là cách dễ nhất. Chúng ta có thể lấy một cột các chuỗi sau đó buộc loại dữ liệu là số (nghĩa là số nguyên hoặc float).

Đối với cột đầu tiên, vì chúng tôi biết nó được cho là các số nguyên của người Hồi giáo, vì vậy chúng tôi có thể đặt

python script.py in.txt out.xlsx
7 vào phương pháp chuyển đổi
python script.py in.txt out.xlsx
8.
python script.py in.txt out.xlsx
7
in the
python script.py in.txt out.xlsx
8
conversion method.

>>> df['l1'].astype(int).head()
0    1010
1    1011
2    1012
3    1013
4    1014
Name: l1, dtype: int32

Tuy nhiên,

python script.py in.txt out.xlsx
7 sẽ không hoạt động nếu dữ liệu chứa số thập phân. Trong trường hợp này, chúng ta cần chuyển
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
0 vào đối số phương thức.
python script.py in.txt out.xlsx
7
will not work if the data contain decimals. In this case, we need to pass
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
0
into the method argument.

>>> df['l2'].astype(float).head()
0    1010.10
1    1011.11
2    1012.12
3    1013.13
4    1014.14
Name: l2, dtype: float64

Phương pháp này có vẻ dễ dàng để áp dụng, nhưng đó là khá nhiều tất cả những gì nó có thể làm - nó không hoạt động cho các cột còn lại. Lý do là các cột khác đều chứa một số loại ký tự đặc biệt như dấu phẩy (,), dấu đô la ($), tỷ lệ phần trăm (%), v.v. Rõ ràng, phương pháp

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
1 không thể xử lý các ký tự đặc biệt đó.
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
1
method cannot handle those special characters.

Phương thức pd.to_numeric ()

Phương pháp này hoạt động tương tự như

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
2 theo cách mà họ không nhận ra các ký tự đặc biệt như ký hiệu tiền tệ ($) hoặc hàng ngàn dấu phân cách (dấu chấm hoặc dấu phẩy).
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
2
in a way that they don’t recognize the special characters such as the currency symbols ($) or the thousand separators (dot or comma).

Tuy nhiên, phương pháp này rất tiện lợi trong một số tình huống mà chúng ta cần làm sạch dữ liệu. Ví dụ: dữ liệu trong cột L8 là sự kết hợp của các số văn bản của Google (ví dụ: 1010 1010) và văn bản thực khác (ví dụ: ASDF ASDF). Trong phương thức

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
3, khi
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
4, mã sẽ chạy mà không gây ra lỗi nhưng sẽ trả về NAN cho các số không hợp lệ.
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
3
method, when
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
4
, the code will run without raising errors but will return NaN for invalid numbers.

Sau đó, chúng ta có thể thay thế các nan đó bằng các giá trị giả khác như 0.

>>> pd.to_numeric(df['l8'], errors = 'coerce')
0     1010.0
1        NaN
2     1012.0
3        NaN
4     1014.0
5        NaN
.....

>>> pd.to_numeric(df['l8'], errors = 'coerce').replace(np.nan, 0)
0     1010.0
1        0.0
2     1012.0
3        0.0
4     1014.0
5        0.0

Dữ liệu chứa các ký tự đặc biệt

Đối với các cột có chứa các ký tự đặc biệt như dấu đô la, dấu tỷ lệ phần trăm, dấu chấm hoặc dấu phẩy, chúng ta cần xóa các ký tự đó trước khi chuyển đổi văn bản thành các số.

Chúng ta có thể sử dụng

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
5 để truy cập toàn bộ cột chuỗi, sau đó thay thế các ký tự đặc biệt bằng phương pháp
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
6. Ví dụ:
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
5
to access an entire column of strings, then replace the special characters using the
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
6
method. For example:

python script.py in.txt out.xlsx
0

Đối số n = 1 ở trên có nghĩa là chúng ta chỉ thay thế lần xuất hiện đầu tiên (từ đầu chuỗi) của ‘. Theo mặc định, N được đặt thành -1, sẽ thay thế tất cả các lần xuất hiện.

Đừng nhầm lẫn

workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
6 với
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
8. Cái trước chỉ hoạt động trên chuỗi; trong khi đó, sau này hoạt động trên cả chuỗi hoặc số.
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
6
with
workbook = xlsxwriter.Workbook(filename, {'strings_to_numbers': True})
8
. The former operates only on strings; whereas the latter works on either strings or numbers.

Hãy để Lừa cũng làm sạch các cột khác:

python script.py in.txt out.xlsx
1

Sau khi xóa tất cả các ký tự đặc biệt, bây giờ chúng ta có thể sử dụng df.Asype () hoặc pd.to_numeric () để chuyển đổi văn bản thành số.df.astype() or pd.to_numeric() to convert text to numbers.

Công thức để chuyển đổi văn bản thành số excel là gì?

Cách chuyển đổi văn bản thành số trong Excel: 2 cách..
Nhập vào 1 1 vào bất kỳ ô trống gần đó.....
Nhấp chuột phải vào ô chứa 1 1 và chọn bản sao (hoặc sử dụng CTRL+C) ..
Chọn các ô bạn muốn chuyển đổi ..
Nhấp chuột phải vào lựa chọn và chọn dán đặc biệt để khởi chạy hộp thoại đặc biệt dán ..