Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python - Pandas의 쿼리 기능을 사용하여 열 값을 기반으로 행 필터링?

<시간/>

열 값을 기반으로 행을 필터링하려면 query() 함수를 사용할 수 있습니다. 함수에서 레코드를 필터링할 조건을 설정합니다. 먼저 필요한 라이브러리를 가져옵니다 -

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을 만들고 열도 추가하십시오 -

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

query()를 사용하여 "순위"가 5 −

인 레코드를 필터링합니다.
dataFrame.query("Rank == 5"))

예시

다음은 전체 코드입니다 -

import pandas as pd

# data in the form of list of team rankings
Team = [['India', 1, 100],['Australia', 2, 85],['England', 3, 75],['New Zealand', 4 , 65],['South Africa', 5, 50],['Bangladesh', 6, 40]]

# Creating a DataFrame and add columns
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])

print"DataFrame...\n",dataFrame

# using query to filter rows
print"\nFetch Team with Rank 5..\n",dataFrame.query("Rank == 5")

출력

이것은 다음과 같은 출력을 생성합니다 -

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

예시

다른 예를 보겠습니다. 여기에 행을 필터링하는 다른 조건이 있습니다 -

import pandas as pd

# data in the form of list of team rankings
Team = [['India', 1, 100],['Australia', 2, 85],['England', 3, 75],['New Zealand', 4 , 65],['South Africa', 5, 50],['Bangladesh', 6, 40]]

# Creating a DataFrame and add columns
dataFrame = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])

print"DataFrame...\n",dataFrame

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

출력

이것은 다음과 같은 출력을 생성합니다 -

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