Pandas DataFrame에서 열 값을 기준으로 행을 삭제하는 방법
Asad Riaz
2023년1월30일
loc
유무에 관계없이.drop
과boolean masking
을 사용하여 열 값의 조건에 따라 Pandas DataFrame
행을 삭제하는 메소드를 소개합니다.
Pandas DataFrame
의 열 값에서 행을 삭제하는.drop
메소드
.drop
메소드는 단일 또는 열 이름 목록을 허용하고 행 또는 열을 삭제합니다. 행의 경우axis=0
매개 변수를 설정하고 열의 경우axis=1
을 설정합니다 (기본적으로axis
는0
). 또한 Pandas DataFrame
의 열 값에 적용되는 조건을 기반으로 일련의True
및False
를 얻을 수 있습니다.
예제 코드:
# python 3.x
import pandas as pd
fruit_list = [
("Orange", 34, "Yes"),
("Mango", 24, "No"),
("banana", 14, "No"),
("Apple", 44, "Yes"),
("Pineapple", 64, "No"),
("Kiwi", 84, "Yes"),
]
# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
# Get names of indexes for which column Stock has value No
indexNames = df[df["Stock"] == "No"].index
# Delete these row indexes from dataFrame
df.drop(indexNames, inplace=True)
print(df)
출력:
Name Price Stock
0 Orange 34 Yes
3 Apple 44 Yes
5 Kiwi 84 Yes
df.drop
메소드 안에.loc
을 사용하여 비슷한 결과를 얻을 수도 있습니다.
df.drop(df.loc[df["Stock"] == "Yes"].index, inplace=True)
여러 열 값을 기준으로 행을 삭제할 수도 있습니다. 위의 예에서 price> = 30
및 price <= 70
인 행을 삭제할 수 있습니다.
예제 코드:
# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [
("Orange", 34, "Yes"),
("Mango", 24, "No"),
("banana", 14, "No"),
("Apple", 44, "Yes"),
("Pineapple", 64, "No"),
("Kiwi", 84, "Yes"),
]
# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
indexNames = df[(df["Price"] >= 30) & (df["Price"] <= 70)].index
df.drop(indexNames, inplace=True)
print(df)
출력:
Name Price Stock
1 Mango 24 No
2 banana 14 No
5 Kiwi 84 Yes
가격이 30보다 작고 <70보다 작은 행은 삭제되었습니다.
Pandas DataFrame
에서 행을 삭제하는boolean masking
방법
부울 마스킹은 열 값을 기준으로 Pandas DataFrame
에서 행을 삭제하는 가장 쉽고 간단한 방법입니다.
예제 코드:
# python 3.x
import pandas as pd
# List of Tuples
fruit_list = [
("Orange", 34, "Yes"),
("Mango", 24, "No"),
("banana", 14, "No"),
("Apple", 44, "Yes"),
("Pineapple", 64, "No"),
("Kiwi", 84, "Yes"),
]
# Create a DataFrame object
df = pd.DataFrame(fruit_list, columns=["Name", "Price", "Stock"])
print(df[df.Price > 40])
print("............................")
print(df[(df.Price > 40) & (df.Stock == "Yes")])
출력:
Name Price Stock
3 Apple 44 Yes
4 Pineapple 64 No
5 Kiwi 84 Yes
............................
Name Price Stock
3 Apple 44 Yes
5 Kiwi 84 Yes