Pandas 데이터프레임에서 행 목록 삭제하기
Pandas 데이터프레임에서 행 목록 삭제하기
이 글에서는 Pandas 데이터프레임에서 행 목록을 삭제하는 두 가지 방법을 살펴보겠습니다.
인덱스를 사용하여 행 삭제
Pandas에서 인덱스를 사용하여 행을 삭제하는 가장 간단한 방법은 drop()
함수를 사용하는 것입니다. drop()
함수에는 두 가지 주요 매개변수가 있습니다.
index
: 삭제할 행의 인덱스를 지정하는 리스트 또는 배열입니다.axis
: 삭제할 축을 지정합니다. 기본값은 0이며, 이는 행을 삭제한다는 의미입니다. 1로 설정하면 열을 삭제합니다.
다음은 인덱스를 사용하여 행 목록을 삭제하는 방법입니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# 인덱스를 사용하여 행 삭제
df = df.drop(index=to_drop, axis=0)
# 결과 출력
print(df)
위 코드는 다음과 같은 결과를 출력합니다.
A B
0 1 10
1 2 20
3 4 40
특정 조건을 충족하는 행을 삭제하려면 loc
또는 query
함수를 사용하여 조건을 만족하는 행의 인덱스를 선택한 다음 drop()
함수를 사용하여 해당 인덱스를 기반으로 행을 삭제할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제 조건
condition = df['B'] > 30
# 조건을 충족하는 행 인덱스 선택
to_drop = df[condition].index
# 인덱스를 사용하여 행 삭제
df = df.drop(index=to_drop, axis=0)
# 결과 출력
print(df)
A B
0 1 10
1 2 20
3 4 40
inplace 매개변수 사용
drop()
함수에는 inplace
매개변수도 있습니다. 이 매개변수를 True
로 설정하면 원본 데이터프레임을 수정하고 새 데이터프레임을 반환하지 않습니다. 기본값은 False
이며, 이 경우 새 데이터프레임을 반환합니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# inplace=True를 사용하여 행 삭제
df.drop(index=to_drop, axis=0, inplace=True)
# 결과 출력
print(df)
A B
0 1 10
1 2 20
3 4 40
결론
Pandas 데이터프레임에서 행 목록을 삭제하는 방법에는 여러 가지가 있습니다.
- 인덱스를 사용하여 삭제: 이 방법은 삭제할 행의 인덱스를 알고 있는 경우에 유용합니다.
- 조건을 사용하여 삭제: 이 방법은 특정 조건을 충족하는 행을 삭제해야 하는 경우에 유용
예제 코드
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# 인덱스를 사용하여 행 삭제
df_dropped = df.drop(index=to_drop, axis=0)
# 결과 출력
print(df_dropped)
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제 조건
condition = df['B'] > 30
# 조건을 충족하는 행 인덱스 선택
to_drop = df[condition].index
# 인덱스를 사용하여 행 삭제
df_dropped = df.drop(index=to_drop, axis=0)
# 결과 출력
print(df_dropped)
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# inplace=True를 사용하여 행 삭제
df.drop(index=to_drop, axis=0, inplace=True)
# 결과 출력 (inplace=True를 사용했으므로 df 자체가 변경되었습니다.)
print(df)
Pandas 데이터프레임에서 행 목록을 삭제하는 대체 방법
하지만 상황에 따라 더 효율적이거나 간결한 방법들이 있을 수 있습니다.
다음은 Pandas 데이터프레임에서 행 목록을 삭제하는 데 유용할 수 있는 몇 가지 대체 방법입니다.
loc 함수 사용
loc
함수는 행 또는 열을 선택하는 데 사용할 수 있는 강력한 인덱싱 도구입니다. 특정 인덱스 값 또는 조건을 사용하여 삭제할 행을 선택하는 데 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# loc를 사용하여 행 삭제
df = df.loc[~df.index.isin(to_drop)]
# 결과 출력
print(df)
A B
0 1 10
1 2 20
3 4 40
query 함수 사용
query
함수는 SQL과 유사한 문자열 표현식을 사용하여 데이터프레임을 필터링하는 데 사용할 수 있습니다. 삭제할 행을 선택하는 조건을 표현식으로 작성하여 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제 조건
condition = "B > 30"
# query를 사용하여 행 삭제
df_dropped = df.query(~condition)
# 결과 출력
print(df_dropped)
A B
0 1 10
1 2 20
3 4 40
NumPy 배열 사용
만약 삭제할 행의 위치를 정확히 알고 있다면 NumPy 배열을 사용하여 간단하게 삭제할 수 있습니다.
import pandas as pd
import numpy as np
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 위치 리스트
to_drop = [2, 4]
# NumPy 배열 생성
mask = np.ones(len(df), dtype=bool)
mask[to_drop] = False
# NumPy 배열을 사용하여 행 삭제
df_dropped = df[mask]
# 결과 출력
print(df_dropped)
A B
0 1 10
1 2 20
3 4 40
반복문 사용
특정 조건을 충족하는 행을 하나씩 반복적으로 삭제해야 하는 경우 반복문을 사용할 수 있습니다.
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 삭제할 행 인덱스 리스트
to_drop = [2, 4]
# 반복문을 사용하여 행 삭제
for i in to_drop:
df = df.drop(index=i, axis=0)
# 결과 출력
print(df)
A B
python pandas