[Pandas] Dataframe 행 또는 열을 제거
Pandas Dataframe에서 행 또는 열을 제거하는 법
Dataframe에서 행 또는 열을 제거하려면 dataframe에서 사용가능한 drop() 메소드를 이용해야 합니다.
제거할 행이나 열을 지정하고, axis 매개변수를 사용하여 제거할 대상이 행인지 열인지를 지정합니다.
Dataframe Axis(축)
- 행은 axis=0으로 나타내고
- 열은 axis=1으로 나타납니다.
Drop() 메소드 매개변수
- index - 삭제할 행의 목록
- axis=0 - dataframe의 행이 삭제될 것이라는 표기
- inplace=True/False
- inplace=True를 사용하면 DataFrame이 직접 수정되며, 새로운 DataFrame 객체가 반환되지 않습니다.
- inplace=False를 사용하면 새로운 DataFrame이 반환됩니다.
1. 행 제거
1) 하나의 행 제거
import pandas as pd
# DataFrame 생성
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# 인덱스를 사용하여 특정 행 제거
df.drop(index=[1], inplace=True)
print(df)
2) 인덱스 범위 활용하여 여러 행 제거
Dataframe에 df.index() 메소드를 사용하여 행의 범위를 생성 / 그리고나서 그 범위를 drop() 메소드로 넘겨 아래와 같이 행을 삭제
import pandas as pd
# 예시 DataFrame 생성
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 삭제할 행의 인덱스 범위 생성 (예: 1부터 3까지의 범위)
index_range = range(1, 4)
# 인덱스 범위를 사용하여 행 삭제
df.drop(index=index_range, inplace=True)
print(df)
3) iloc 활용하여 여러행 제거
iloc[]은 Pandas에서 위치 기반 인덱싱을 수행하는 메소드입니다.
즉, 정수 인덱스를 사용하여 DataFrame의 특정 행이나 열을 선택합니다.
iloc[]을 사용할 때 콜론(:)을 사용하여 행이나 열의 범위를 지정할 수 있습니다. 콜론 앞에 있는 값은 시작 인덱스를, 콜론 뒤에 있는 값은 종료 인덱스를 나타냅니다. 범위를 지정할 때 콜론 앞이나 뒤에 값이 없으면, 시작 인덱스나 종료 인덱스는 해당 차원의 시작 또는 끝까지로 간주됩니다.
예를 들어, iloc[2:5]는 인덱스 2부터 인덱스 4까지(인덱스 5는 포함되지 않음)의 행을 선택합니다.
import pandas as pd
# 예시 DataFrame 생성
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 특정 인덱스를 사용하여 행 선택
index_to_remove = 2 # 제거할 행의 인덱스 (예: 2)
selected_row = df.iloc[index_to_remove] # 선택한 행
print("선택한 행:")
print(selected_row)
# 선택한 행 제거
df.drop(index=index_to_remove, inplace=True)
print("\n제거 후 DataFrame:")
print(df)
4) 여러 조건을 가진 행을 삭제
주어진 조건을 충족하는 행의 인덱스를 선택하고 이를 drop() 메소드로 전달하여 행을 삭제
예를 들어, DataFrame에서 열의 값이 X보다 크고 Y보다 작은 행을 삭제하기위해서 :
- 조건을 만족하는 행의 인덱스 선택
- 선택한 인덱스를 사용하여 해당 행 삭제
import pandas as pd
# 예시 DataFrame 생성
data = {'A': [1, 2, 3, 4, 5],
'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)
# 조건 설정
condition = (df['A'] > 2) & (df['B'] < 10) # 열 'A'의 값이 2보다 크고, 열 'B'의 값이 10보다 작은 조건
# 조건을 만족하는 행의 인덱스 선택
indexes_to_drop = df[condition].index
# 선택한 인덱스를 사용하여 해당 행 삭제
df.drop(index=indexes_to_drop, inplace=True)
print(df)
위 코드에서는 열 'A'의 값이 2보다 크고, 열 'B'의 값이 10보다 작은 행을 삭제합니다. 이를 위해 먼저 조건을 설정하고, 이 조건을 만족하는 행의 인덱스를 선택한 후 해당 행을 삭제합니다. 결과적으로 조건을 만족하지 않는 행만 남게 됩니다.
2. 열 제거
import pandas as pd
# DataFrame 생성
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# 열 이름을 사용하여 특정 열 제거
df.drop(columns=['B'], inplace=True)
print(df)