Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thêm một cột mới trong DataFrame của gấu trúc. Chúng ta sẽ thấy một số cách tiếp cận khác nhau để chèn cột vào khung dữ liệu gấu trúc
Bài viết này là một phần của loạt bài "Tích hợp Python với Excel", bạn có thể tìm mục lục tại đây để điều hướng dễ dàng hơn
phương thức chèn []
Cách nhanh nhất là sử dụng. phương thức insert[] được cung cấp bởi pandas. Phương thức nhận các đối số sau
loc
– số chỉ mục để chèncolumn
– tên cộtvalue
– dữ liệu được chèn vào
Hãy sử dụng ví dụ từ trước để chứng minh điều này. Mục tiêu của chúng tôi là chèn một cột mới có giá trị 100 sau cột đầu tiên. Lưu ý rằng phương thức insert[]
sẽ ghi đè lên phương thức gốc của
>>> df['sqbracket method'] = df['new col'] * 2
>>> df
col 1 new col col 2 col 3 sqbracket method
0 1 100 6 11 200
1 2 100 7 12 200
2 3 100 8 13 200
3 4 100 9 14 200
4 5 100 10 15 200
0import pandas as pd
df = pd.DataFrame[{'col 1':[1,2,3,4,5],
'col 2':[6,7,8,9,10],
'col 3':[11,12,13,14,15],
}]
>>> df
col 1 col 2 col 3
0 1 6 11
1 2 7 12
2 3 8 13
3 4 9 14
4 5 10 15
>>> df.insert[1, 'new col', [100,100,100,100,100]]
>>> df
col 1 new col col 2 col 3
0 1 100 6 11
1 2 100 7 12
2 3 100 8 13
3 4 100 9 14
4 5 100 10 15
Phương pháp dấu ngoặc vuông
Ok, tôi đã tạo ra tên này. Tôi không biết nó được gọi là gì, nhưng chúng tôi sử dụng dấu ngoặc vuông ở đây nên tôi gọi nó là phương pháp dấu ngoặc vuông. Đây là phương pháp yêu thích của tôi để thêm các cột mới vào khung dữ liệu do tính đơn giản của nó
Hãy nhớ từ bài đăng khác về cách chúng tôi có thể tham chiếu một cột trong khung dữ liệu? . Tiếp tục với ví dụ trước
>>> df['sqbracket method'] = df['new col'] * 2
>>> df
col 1 new col col 2 col 3 sqbracket method
0 1 100 6 11 200
1 2 100 7 12 200
2 3 100 8 13 200
3 4 100 9 14 200
4 5 100 10 15 200
Xem việc tạo một cột được tính toán dễ dàng như thế nào? . Tuy nhiên với cách này bạn không được chọn vị trí thêm cột mới. Nó sẽ luôn được thêm vào cuối khung dữ liệu
phương thức gán[]
Hãy thêm một cột mới bằng df. chỉ định phương pháp. Đối số đầu tiên chúng ta đưa vào hàm sẽ là tên của cột mới. Chúng ta có thể gán một số dữ liệu [e. g. một danh sách] vào cột mới hoặc chúng ta có thể thêm một cột được tính toán mới như được hiển thị bên dưới
>>> df.assign[col_1_x_2=df['col 1']*2]
col 1 col 2 col 3 col_1_x_2
0 1 6 11 2
1 2 7 12 4
2 3 8 13 6
3 4 9 14 8
4 5 10 15 10
Lưu ý rằng. phương thức gán [] chỉ trả về khung dữ liệu mới, nhưng nó không ghi đè lên khung dữ liệu gốc
Từ điển &. phương thức map[]
Hãy tưởng tượng chúng ta có một từ điển với các khóa là dữ liệu đã có trong khung dữ liệu, sau đó chúng ta có thể đưa các giá trị từ điển vào khung dữ liệu khá dễ dàng. Lưu ý rằng. map[] là một phương thức pandas Series [i. e. chỉ hoạt động trên Sê-ri], không phải hàm map[] tích hợp sẵn của Python
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng thư viện Python openpyxl để chèn hàng, cột và hợp nhất các ô trong sổ làm việc Excel. Định dạng tệp Excel có thể là một công việc tẻ nhạt và tốn thời gian, do đó, đây là một công việc tốt để tự động hóa
Thư viện
Chúng tôi sẽ sử dụng thư viện openpyxl để tạo một bảng tính Excel lập ngân sách đơn giản. Để cài đặt thư viện, hãy nhập nội dung sau vào cửa sổ nhắc lệnh
pip install openpyxl
Dữ liệu mô phỏng
Đoạn mã dưới đây tạo một tệp Excel có tên là “định dạng. xlsx” với một số dữ liệu bên trong. Sao chép và chạy đoạn mã sau nếu bạn muốn làm theo
from openpyxl import Workbook
wb = Workbook[]
ws = wb.active
ws.title = 'formatting'
income = [['Income', ''],
['Salary', 1000],
['Investment', 500],
['Side hustle', 500],
['Total', 2000]]
expense = [['Expense',''],
['Housing', 1200],
['Insurance', 200],
['Grocery', 500],
['Entertainment', 500],
['Total', 2400]]
for row in income+expense:
ws.append[row]
wb.save['formatting.xslx']
Bạn sẽ nhận được một tệp Excel chưa định dạng trông như thế này
Chèn hàng và cột trong Excel bằng Python openpyxl
Hãy bắt đầu định dạng bằng cách di chuyển các ô [có dữ liệu] xung quanh để làm cho sổ làm việc trông đẹp hơn một chút. Thêm đoạn mã sau vào sau khối vòng lặp for, nhưng trước khi lưu tệp
ws.insert_rows[1,6]
ws.insert_cols[1]
ws.move_range["B12:C17", rows = 2, cols = 0]
##Add more stuff
ws['B2'] = 'Monthly Budget'
ws['E7'] = 'Income'
ws['F7'] = '=sum[C8:C10]'
ws['E9'] = 'Expense'
ws['F9'] = '=sum[C15:C18]'
ws['E11'] = 'Net'
ws['F11'] = '=F7-F9'
ws['E13'] = 'Exp/Income Ratio'
ws['F13'] = '=F9/F7'
Khối mã trên đã làm như sau
- Dòng đầu tiên – Chèn 6 hàng, từ hàng 1-6
- Dòng thứ 2 – Chèn 1 cột tại cột A [1]
- Và dòng thứ 3 – Đã di chuyển phần Chi phí [với 2 bước trước, phần này hiện ở B12. C17] xuống 2 hàng
- Phần còn lại của mã – đã thêm một loạt thứ khác trong B2 và các ô xung quanh E7. F13
Hợp nhất các ô bằng openpyxl
Tiếp tục với phần trên, thêm phần sau ngay sau khối mã trước đó. Đoạn mã dưới đây hợp nhất một số ô lại với nhau. Lưu ý hai cách hợp nhất các ô bằng cách sử dụng ws. phương thức merge_cell[]