간혹 가다 dataframe의 값들중 빈칸인데도 Nan이 아닌 ""로 되어 있는 경우가 있다.
그렇다고 fillna를 써서 모든 Nan값을 빈칸으로 만들고 싶지 않은 경우가 있다. 그럴경우에는 어떻게하는지 기록한다.
ex)요런 df(temp_df)가 있다고 가정했을때
col_1 | col_2 | col_3 | col_4 | col_5 | col_6 |
0 | 값_1 | 값_2_1 | Nan | 1 | |
1 | 값_2 | 값_2_2 | Nan | 1 | |
2 | 값_3 | 값_2_3 | Nan | 1 | |
3 | Nan | 값_4 | 값_2_4 | Nan | 1 |
4 | Nan | 값_5 | 값_2_5 | Nan | 1 |
5 | Nan | 값_6 | 값_2_6 | 1 |
1 |
6 | Nan | 값_7 | 값_2_7 | 2 |
1 |
import numpy as np
temp_dict={"" : np.nan}
temp_df=temp_df.replace({"col_2": temp_dict})
위와 같이 작성하면 아래와 같이 "col_2"의 값들중 ""으로 된 부분들만 Nan으로 변경해준다.
col_1 | col_2 | col_3 | col_4 | col_5 | col_6 |
0 | Nan | 값_1 | 값_2_1 | Nan | 1 |
1 | Nan | 값_2 | 값_2_2 | Nan | 1 |
2 | Nan | 값_3 | 값_2_3 | Nan | 1 |
3 | Nan | 값_4 | 값_2_4 | Nan | 1 |
4 | Nan | 값_5 | 값_2_5 | Nan | 1 |
5 | Nan | 값_6 | 값_2_6 | 1 | 1 |
6 | Nan | 값_7 | 값_2_7 | 2 | 1 |
이걸 응용하면 아래와 같이 여러개의 컬럼들의 특정 값만 변경가능하다.
temp_dict={np.nan:"", 1:10 }
temp_df=temp_df.replace({"col_5": temp_dict})
col_5의 1은 10으로 np.nan인 값은 빈 String으로 변경이 가능하다.
col_1 | col_2 | col_3 | col_4 | col_5 | col_6 |
0 | Nan | 값_1 | 값_2_1 | 1 | |
1 | Nan | 값_2 | 값_2_2 | 1 | |
2 | Nan | 값_3 | 값_2_3 | 1 | |
3 | Nan | 값_4 | 값_2_4 | 1 | |
4 | Nan | 값_5 | 값_2_5 | 1 | |
5 | Nan | 값_6 | 값_2_6 | 10 | 1 |
6 | Nan | 값_7 | 값_2_7 | 2 | 1 |
끝.
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[GCP]Bigquery로 데이터 전송하기(Dataframe / Python / pandas_gbq) (0) | 2022.08.10 |
---|---|
[python(파이썬)]dataframe 호출시 na 살리기 (0) | 2022.07.22 |
[python(파이썬)]비속어 제거하기(better-profanity) (0) | 2022.06.27 |
[Pandas(판다스)] 특정 row(index)만 범위 삭제하기 (0) | 2022.06.08 |
[Python].ipynb to .py (Window, Linux) / convert .ipynb to .py (0) | 2022.04.11 |