데이터프레임 조건에 맞는 행 index 뽑아오기 - index
데이터 프레임에서 조건에 맞는 행의 index를 뽑아오는 방법은 바로 .index를 붙이면 된다.
바로 전 글에서 isin을 사용해서 데이터 프레임에서 값으로 행을 추출하는 방법에 대해 설명했는데
2022.05.30 - [self.python] - [python] 데이터프레임 조건에 맞는 행 index 뽑아오기
그 바로 뒤에 .index를 붙이면 그 조건을 만족하는 행의 인덱스를 알 수 있다.
보통 이렇게 쓰는 경우는 그 조건에 부합하는 행을 삭제하기 위해서 사용하는 경우가 많은 것 같다.
isin() 을 사용해서 조건에 맞는 행을 뽑아내고 바로 drop을 하면 에러가 나게 된다.
drop함수 안에는 index를 써야 제대로 drop이 된다.
1. 데이터 프레임 준비
import numpy as np
import pandas as pd
score = {'Year' : ['2016', '2017', '2018', '2019', '2020', '2021', '2022'],
'Mary': [90, 68, 70, 80, 92, 68, 78],
'Kate': [90, 68, 70, 80, 92, 68, 78],
'Mark': [39, 59, 60, 73, 84, 87, 92],
'Maxi': [83, 92, 71, 56, 79, 93, 85],
'Jess': [np.nan,0, 0, 0, 44, 74, 49]}
df = pd.DataFrame(score)
df
이전에 사용했던 데이터 프레임을 재활용 하는 것이다. 임의의 데이터 프레임 df는 2016 ~ 2022년도 각 학생의 점수를 나타낸 것이라 하자.
2. 원하는 조건 뽑아내기
isin() 함수로 원하는 조건의 행을 뽑을 수 있다. 예를들어 Mary 라는 학생이 68점, 70점 맞았을 때의 행을 가져온다고 하자.
물론, isin 말고도 여러 방법이 있다.
df[df['Mary'].isin([68, 70])]
조건에 맞는 행이 나왔다.
3. 지우기
여기서 이 행들을 지우고 싶은데, 바로 drop을 쓴다면 ?
df_del = df.drop(df[df['Mary'].isin([68, 70])])
df_del
```
이렇게 err가 발생한다.
df_del = df.drop(df[df['Mary'].isin([68, 70])].index)
df_del
이렇게 index로 지워주면(1, 2, 5번 인덱스) 해당 행이 모두 지워진 것을 볼 수 있다.
지워진 index를 빼고 index를 초기화 하고 싶다면?
df_del = df.drop(df[df['Mary'].isin([68, 70])].index).reset_index(drop=True)
df_del
저번 글 처럼 reset_index(drop = True) 를 써주면 된다.
총 정리
import numpy as np
import pandas as pd
score = {'Year' : ['2016', '2017', '2018', '2019', '2020', '2021', '2022'],
'Mary': [90, 68, 70, 80, 92, 68, 78],
'Kate': [90, 68, 70, 80, 92, 68, 78],
'Mark': [39, 59, 60, 73, 84, 87, 92],
'Maxi': [83, 92, 71, 56, 79, 93, 85],
'Jess': [np.nan,0, 0, 0, 44, 74, 49]}
df = pd.DataFrame(score)
df_del = df.drop(df[df['Mary'].isin([68, 70])].index).reset_index(drop=True)
df_del
* 참고
df[df['Mary'].isin([68, 70])].index
# Int64Index([1, 2, 5], dtype='int64')
'self.python' 카테고리의 다른 글
[python] 데이터프레임 값에 apply 로 함수 적용하는 다양한 방법 (0) | 2022.06.01 |
---|---|
[python] 0 으로 채워진 데이터 프레임 만들기! - zeros (0) | 2022.05.31 |
[python] isin() 사용해서 데이터 프레임에서 데이터 값으로 행 추출하는 방법 (0) | 2022.05.29 |
[python] 데이터 프레임 행(row) 추가하기 (0) | 2022.05.22 |
[python] 입력 받은 수를 이진수 변환 - 재귀함수 이용 (0) | 2022.05.20 |
댓글