Các giá trị Boolean như True, False và 1, 0 có thể dùng làm chỉ mục (index) trong pandas DataFrame. Chúng giúp lọc các bản ghi cần thiết. Dưới đây chúng ta sẽ thấy các phương pháp thực hiện Boolean indexing.
Tạo chỉ mục Boolean
Xét một DataFrame mô tả dữ liệu trò chơi. Các điểm số trong ngày khác nhau được lưu trong dictionary. Sau đó ta tạo chỉ mục cho DataFrame dùng True/False làm giá trị index. Rồi in DataFrame ra.
Ví dụ
import pandas as pd
# dictionary
game = {'Day': ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
'points': [31, 24, 16, 11, 22]}
df = pd.DataFrame(game, index=[True, False, True, False, True])
print(df)
Kết quả
Day points True Monday 31 False Tuesday 24 True Wednesday 16 False Thursday 11 True Friday 22
Sử dụng .loc[]
Hàm này lọc bản ghi có giá trị Boolean cụ thể. Ví dụ dưới lấy các bản ghi có index là True.
Ví dụ
import pandas as pd
game = {'Day': ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
'points': [31, 24, 16, 11, 22]}
df = pd.DataFrame(game, index=[True, False, True, False, True])
print(df.loc[True])
Kết quả
Day points True Monday 31 True Wednesday 16 True Friday 22
Sử dụng .ix[] (lưu ý: .ix[] đã bị loại bỏ từ pandas 0.20+)
Phương pháp này cũng dùng số nguyên như giá trị Boolean. Ta đổi True/False thành 1/0 trong DataFrame, rồi dùng để lọc.
Ví dụ
import pandas as pd
game = {'Day': ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
'points': [31, 24, 16, 11, 22]}
df = pd.DataFrame(game, index=[1, 1, 0, 0, 1])
print(df.loc[0]) # dùng .loc[] thay vì .ix[] đã deprecated
Kết quả
Day points 0 Wednesday 16 0 Thursday 11