Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Lọc hàng dựa trên giá trị cột với query() trong Pandas

Để lọc hàng dựa trên giá trị cột, ta sử dụng hàm query(). Trong hàm, đặt điều kiện để lọc bản ghi.

Trước tiên, nhập thư viện:

import pandas as pd

Dữ liệu bản ghi Team:

Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
        ['New Zealand', 4, 65], ['South Africa', 5, 50], ['Bangladesh', 6, 40]]

Tạo DataFrame và thêm cột:

dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])

Sử dụng query() để lọc bản ghi với "Rank" bằng 5:

dataFrame.query("Rank == 5")

Ví dụ 1: Lọc Rank = 5

import pandas as pd

Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
        ['New Zealand', 4, 65], ['South Africa', 5, 50], ['Bangladesh', 6, 40]]

dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
print("DataFrame...\n", dataFrame)

print("\nFetch Team with Rank 5..\n", dataFrame.query("Rank == 5"))

Đầu ra 1

DataFrame...
       Country  Rank  Points
0        India     1     100
1    Australia     2      85
2      England     3      75
3  New Zealand     4      65
4  South Africa     5      50
5   Bangladesh     6      40

Fetch Team with Rank 5..
      Country  Rank  Points
4  South Africa     5      50

Ví dụ 2: Điều kiện phức tạp (Points > 70 và Rank < 3)

import pandas as pd

Team = [['India', 1, 100], ['Australia', 2, 85], ['England', 3, 75],
        ['New Zealand', 4, 65], ['South Africa', 5, 50], ['Bangladesh', 6, 40]]

dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
print("DataFrame...\n", dataFrame)

print("\nFetch Team with points above 70 and Rank less than 3..\n")
print(dataFrame.query("Points > 70 and Rank < 3"))

Đầu ra 2

DataFrame...
       Country  Rank  Points
0        India     1     100
1    Australia     2      85
2      England     3      75
3  New Zealand     4      65
4  South Africa     5      50
5   Bangladesh     6      40

Fetch Team with points above 70 and Rank less than 3..
   Country  Rank  Points
0    India     1     100
1  Australia     2      85