Có nhiều lúc bạn có thể cần đặt giá trị cột Pandas dựa trên điều kiện của cột khác. Trong bài đăng này, bạn sẽ tìm hiểu tất cả các cách khác nhau để bạn có thể tạo các cột có điều kiện Pandas
Mục lục
Video hướng dẫn
Nếu bạn muốn làm theo hướng dẫn bằng video, hãy xem video của tôi bên dưới
Đang tải một khung dữ liệu mẫu
Hãy bắt đầu bằng cách tải một khung dữ liệu Pandas mẫu mà chúng ta có thể sử dụng trong suốt hướng dẫn này
Chúng tôi sẽ bắt đầu bằng cách nhập gấu trúc và tải khung dữ liệu bằng phương thức
Name Age Birth City Gender
0 Jane 23 London F
1 Melissa 45 Paris F
2 John 35 Toronto M
3 Matt 64 Atlanta M
7import pandas as pd
df = pd.DataFrame.from_dict[
{
'Name': ['Jane', 'Melissa', 'John', 'Matt'],
'Age': [23, 45, 35, 64],
'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
'Gender': ['F', 'F', 'M', 'M']
}
]
print[df]
Điều này trả về khung dữ liệu sau
Name Age Birth City Gender
0 Jane 23 London F
1 Melissa 45 Paris F
2 John 35 Toronto M
3 Matt 64 Atlanta M
Sử dụng Pandas loc để đặt Pandas có điều kiện cột
Pandas loc cực kỳ mạnh mẽ. Nếu bạn cần xem lại loc [hoặc iloc],. Pandas' loc tạo mặt nạ boolean, dựa trên một điều kiện. Đôi khi, điều kiện đó có thể chỉ là chọn hàng và cột, nhưng nó cũng có thể được sử dụng để lọc các khung dữ liệu. Các khung dữ liệu được lọc này sau đó có thể có các giá trị được áp dụng cho chúng
Hãy khám phá cú pháp một chút
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
Với cú pháp trên, chúng tôi lọc khung dữ liệu bằng cách sử dụng
Name Age Birth City Gender
0 Jane 23 London F
1 Melissa 45 Paris F
2 John 35 Toronto M
3 Matt 64 Atlanta M
8 và sau đó gán giá trị cho bất kỳ hàng nào trong cột [hoặc các cột] nơi điều kiện được đáp ứngHãy thử điều này bằng cách chỉ định chuỗi 'Dưới 30' cho bất kỳ ai có độ tuổi dưới 30 và 'Trên 30' cho bất kỳ ai từ 30 tuổi trở lên
df['Age Category'] = 'Over 30'
df.loc[df['Age'] < 30, 'Age Category'] = 'Under 30'
Hãy xem những gì chúng tôi đã làm ở đây
- Chúng tôi đã gán chuỗi 'Trên 30' cho mọi bản ghi trong khung dữ liệu. Để tìm hiểu thêm về điều này, hãy xem bài đăng của tôi tại đây hoặc tạo các cột mới
- Sau đó, chúng tôi sử dụng
8 để tạo mặt nạ boolean trên cột Tuổi để lọc xuống các hàng có tuổi nhỏ hơn 30. Khi đáp ứng điều kiện này, cột Danh mục Độ tuổi được gán giá trị mới 'Dưới 30 tuổi'Name Age Birth City Gender 0 Jane 23 London F 1 Melissa 45 Paris F 2 John 35 Toronto M 3 Matt 64 Atlanta M
Nhưng điều gì xảy ra khi bạn có nhiều điều kiện? . Hãy xem làm thế nào chúng ta có thể thực hiện điều này bằng cách sử dụng phương thức
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
1 của numpySử dụng Numpy Select để đặt giá trị bằng nhiều điều kiện
Tương tự như phương pháp trên để sử dụng
Name Age Birth City Gender
0 Jane 23 London F
1 Melissa 45 Paris F
2 John 35 Toronto M
3 Matt 64 Atlanta M
8 để tạo cột điều kiện trong Pandas, chúng ta có thể sử dụng phương pháp numpy df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
1Hãy bắt đầu bằng cách nhập numpy và chúng tôi sẽ đặt cho nó bí danh thông thường là
df.loc[df[‘column’] condition, ‘new column name’] = ‘value if condition is met’
4import numpy as np
Bây giờ, giả sử chúng ta muốn áp dụng một số nhóm tuổi khác nhau, như bên dưới
- = 20] & [df['Age'] < 40],
[df['Age'] >= 40] & [df['Age'] < 59],
[df['Age'] >= 60]
]
values = ['