Pandas의 열 값을 기반으로 데이터 프레임 행을 필터링하는 방법
- 특정 열 값을 기준으로 Pandas 행 선택
- 특정 열 값을 포함하지 않는 Pandas 행을 선택하십시오
- 열 값이 특정 값보다 크거나 작은 Pandas 행을 선택하십시오
- 여러 열 값을 기반으로 Pandas 행 선택
- 여러 조건이있는 DataFrame 행 선택
단일 또는 다중 열 값을 기준으로DataFrame
의 행을 선택할 수 있습니다. 또한 하나 이상의 조건을 만족하거나 만족시키지 못하는 DataFrame에서 행을 가져올 수 있습니다. 부울 인덱싱, 위치 인덱싱, 레이블 인덱싱 및 query()
메서드를 사용하여이 작업을 수행 할 수 있습니다.
특정 열 값을 기준으로 Pandas 행 선택
열의 특정 값을 포함하거나 포함하지 않는 DataFrame에서 Pandas 행을 선택할 수 있습니다. 열 값을 기준으로 DataFrame을 필터링하는 데 널리 사용됩니다.
특정 열 값을 포함하는 Pandas 행을 선택하십시오
부울 인덱싱을 사용하여 필터링
부울 인덱싱에서는 먼저 열에 특정 요소가 포함되어 있는지 여부를 나타내는 일련의 부울 값인 마스크를 생성합니다.
df_mask = df["col_name"] == "specific_value"
그런 다음이 마스크를 원래 DataFrame에 적용하여 필요한 값을 필터링합니다.
filtered_df = df[df_mask]
이것은 열 col_name
에 대해 specific_value
가있는 행만 포함하는 필터링 된 DataFrame을 반환합니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
df_mask = df["Sales"] == 300
filtered_df = df[df_mask]
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
4 April-14 300 3
5 April-16 300 2
이것은df
의Sales
값이300
인 모든 행을 제공합니다.
위치 인덱싱을 사용하여 필터링
부울 인덱싱과 비슷하지만 추가 단계가 필요합니다. 이 방법에서는 먼저 부울 마스크를 만든 다음 부울 마스크에 ‘참’값이있는 위치를 찾습니다. 그런 다음 마스크에서True
값을 가진 모든 위치를iloc()
메소드에 전달하여 원하는 모든 행만 선택되도록합니다.
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
df_mask = df["Sales"] == 300
positions = np.flatnonzero(df_mask)
filtered_df = df.iloc[positions]
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
4 April-14 300 3
5 April-16 300 2
이것은 또한 df
의Sales
값이300
인 모든 행을 제공합니다.
Pandas 체인
또한 Pandas 체인을 사용하여 Pandas 데이터 프레임 필터를 열 값으로 필터링 할 수 있습니다. 이 방법에서는 DataFrame
의 요소 별 동등성을 비교하기 위해 값을 확인해야하는 DataFrame 열에 pandas.DataFrame.eq()
메서드를 사용합니다.
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
filtered_df = df[df.Sales.eq(300)]
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
4 April-14 300 3
5 April-16 300 2
pandas.DataFrame.query()
pandas.DataFrame.query()
를 사용하여 Pandas에서 열 값으로 행을 선택할 수 있습니다.
import pandas as pd
import numpy as np
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
filtered_df = df.query("Sales == 300")
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
4 April-14 300 3
5 April-16 300 2
기존 DataFrame을 업데이트하려면 쿼리 방법에서inplace=True
를 설정할 수 있습니다.
특정 열 값을 포함하지 않는 Pandas 행을 선택하십시오
특정 열 값을 포함하지 않는 Pandas 행을 선택하는 방법은 특정 열 값을 가진 Pandas 행을 선택하는 방법과 유사합니다. 마스크 나 쿼리를 만들 때==
를!=
로 바꾸어 열에 특정 값이 포함되지 않는 조건 만 변경하면됩니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
df_mask = df["Sales"] != 300
filtered_df = df[df_mask]
print(filtered_df)
출력:
Date Sales Price
0 April-10 200 3
2 April-12 400 2
3 April-13 200 4
Sales
값이 300
이 아닌 df
의 모든 행을 선택합니다.
열 값이 특정 값보다 크거나 작은 Pandas 행을 선택하십시오
특정 값보다 크거나 작은 열 값을 가진 Pandas 행을 선택하려면 마스크 나 쿼리를 만드는 동안>
,<=
,>=
와 같은 연산자를 사용합니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
df_mask = df["Sales"] >= 300
filtered_df = df[df_mask]
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
2 April-12 400 2
4 April-14 300 3
5 April-16 300 2
결과적으로 Sales
값이 300
이상인 DataFrame이됩니다.
여러 열 값을 기반으로 Pandas 행 선택
DataFrame에서 열의 특정 값을 기반으로 행을 선택하는 방법을 소개했습니다. 이 섹션에서는 여러 열 값을 기반으로 Pandas 행을 선택하는 방법에 대해 설명합니다.
여러 열 값 중 하나를 포함하는 Pandas 행을 선택하십시오
여러 열 값 중 하나를 포함하는 Pandas 행을 선택하려면 pandas.DataFrame.isin(values)
를 사용하여 DataFrame의 각 요소가 값에 포함되어 있는지 여부를 나타내는 부울의 DataFrame을 반환합니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
values = [200, 400]
filtered_df = df[df.Sales.isin(values)]
print(filtered_df)
출력:
Date Sales Price
0 April-10 200 3
2 April-12 400 2
3 April-13 200 4
Sales
값이200
또는400
인 DataFrame의 모든 행을 필터링합니다.
지정된 여러 열 값 중 하나를 포함하지 않는 Pandas 행을 선택하십시오
여러 개의 지정된 열 값 중 하나를 포함하지 않는 DataFrame의 행을 선택하기 위해 앞에~
기호를 배치하여 pandas.DataFrame.isin(values)
에서 반환 된 부울의 DataFrame을 무효화합니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
values = [200, 400]
filtered_df = df[~df.Sales.isin(values)]
print(filtered_df)
출력:
Date Sales Price
1 April-11 300 1
4 April-14 300 3
5 April-16 300 2
Sales
값이200
또는400
이 아닌 DataFrame의 모든 행을 필터링합니다.
여러 조건이있는 DataFrame 행 선택
여러 열의 행 값을 고려하여 행을 필터링하려면 여러 조건을 만들고&
연산자와 결합합니다. 이제 행은 모든 열의 조건을 만족할 때만 선택됩니다.
import pandas as pd
dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]
df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
values_1 = [200, 400]
values_2 = [2, 3]
filtered_df = df[df.Sales.isin(values_1) & ~df.Price.isin(values_2)]
print(filtered_df)
출력:
Date Sales Price
3 April-13 200 4
Sales
값이200
또는400
이고Price
값이 2 또는 3이 아닌 DataFrame의 모든 행을 필터링합니다. 출력의 행은 전체 DataFrame의 두 조건 만 만족시킵니다.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn관련 문장 - Pandas DataFrame
- Pandas DataFrame 열 헤더를 목록으로 가져 오는 방법
- Pandas DataFrame 열을 삭제하는 방법
- Pandas 에서 DataFrame 열을 Datetime 으로 변환하는 방법
- Pandas DataFrame에서 float를 정수로 변환하는 방법
- 한 열의 값으로 Pandas DataFrame 을 정렬하는 방법
- Pandas 그룹 및 합계를 집계하는 방법