[Python pandas] DataFrame에서 조건에 맞는 값만 찾아 값을 변경하기

hwwwa·2022년 1월 25일
2

🐼 Python

목록 보기
12/18

조건 지정하기

df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})
#    X  Y
# 0  1  4
# 1  2  1
# 2  3  8
  • 위와 같은 데이터 프레임에서 X가 2이고 Y가 비어있지 않은 열만 찾는 방법은 아래와 같음
tmp_df = df[(df['X'] == 1) & (df['Y'].notnull())]
#    X  Y
# 1  2  1

조건에 해당하는 값 변경하기

  • X가 1이고 Y가 비어있지 않을 때 Y의 값을 9로 변경하기
    • 앞선 조건 지정을 통해 해당하는 열의 인덱스 번호를 받아올 수 있음
    • 열의 인덱스 번호 리스트로 for문 돌리기
df = pd.DataFrame({'X': [1, 2, 3,],
                   'Y': [4, 1, 8]})

for i in df[(df['X'] == 1) & (df['Y'].notnull())].index:
        df.at[i, 'Y'] = 9

print(df)
#    X  Y
# 0  1  4
# 1  2  9
# 2  3  8
  • 이 때 df.at이 아닌 df.loc을 통해 값을 변경하려고 하면 에러가 발생하니 at을 사용

0개의 댓글