[파이썬] 데이터프레임 값 변경방법 총정리

반응형
    반응형

    데이터프레임 값 변경하기

    판다스(Pandas) 데이터프레임에서 특정 값을 원하는 값으로 변경하는 방법은 여러 가지가 있습니다. 이전에 replace로 변경하기에 대한 내용을 포스팅했었는데 비슷한 내용이지만 이번 포스팅에서는 replace 없이 다른 메쏘드를 통해 사용하는 방법을 소개합니다.

     

    1. 특정 조건에 맞는 값 변경하기

    import pandas as pd
    
    # 예시 데이터프레임 생성
    data = {'A': [1, 2, 3, 4, 5],
            'B': [10, 20, 30, 40, 50]}
    df = pd.DataFrame(data)
    
    # 조건을 만족하는 값을 원하는 값으로 변경
    df.loc[df['A'] == 3, 'B'] = 100
    
    df.iloc[2, 0] = 7
    
    df

     

     

    loc를 이용해  'A' 열에서 값이 3인 행의 'B' 값을 100으로 변경합니다. iloc의 3번째값의 0번째 컬럼을 7로 변경합니다.


    2. **`at` 또는 `iat` 사용**

    단일 값의 위치를 지정해 변경할 때 효율적입니다.

    # 인덱스 1, 'B' 열의 값을 88로 변경 (at 사용)
    df.at[1, 'B'] = 88
    
    # 인덱스 0, 0번째 열의 값을 99로 변경 (iat 사용)
    df.iat[0, 0] = 99
    
    df

    3. **`apply` 함수 사용**

    데이터프레임의 열 또는 행에 대해 함수를 만들어서 원하는 값으로 변경합니다.

    # 'A' 열의 모든 값에 10을 더한 결과로 변경
    df['A'] = df['A'].apply(lambda x: x + 10)
    
    df

    열이나 행에 대해서 한꺼번에 변경이 가능하니 유용합니다.

     

     

    4. **`mask` 또는 `where` 사용**

     mask는 조건이 True인 값들을 변경하고, where는 조건이 False인 값들을 변경합니다.

     

    # 'B' 열의 값이 30보다 작은 경우 해당 값을 0으로 변경
    df['B'] = df['B'].mask(df['B'] < 30, 0)
    
    # 'A' 열의 값이 15보다 큰 경우에만 값을 99로 변경
    df['A'] = df['A'].where(df['A'] <= 15, 99)
    
    df

     

    조건에 맞는 값을 변경합니다. loc도 조건을 넣을 수 있지만 mask나 where을 쓰면 훨씬 변하게 쓸 수 있습니다.


    5. **`update` 메소드 사용**

    다른 데이터프레임이나 시리즈의 값을 기반으로 데이터를 업데이트합니다.

    # 업데이트할 데이터프레임 생성
    df_update = pd.DataFrame({'A': [7, 8], 'B': [77, 88]}, index=[2, 3])
    
    # df를 df_update로 업데이트
    df.update(df_update)
    
    df

     

    df 전체가 바뀌는게 아니라 이루 해당하는 값에 대해서만 바꿀 수 있습니다. 대신 인덱스와 컬럼이 정확히 일치해야만 할 수 있는 것이니 참고하시기 바랍니다.

     

    마치며

    다양한 상황에서 유용하게 사용할 수 있습니다. 특정 조건에서 데이터프레임의 값을 변경하거나 업데이트할 때, 상황에 맞는 적절한 방법을 선택하셔서 데이터처리하는데 도움이 되셨으면 좋겠습니다.

    댓글

    Designed by JB FACTORY

    ....