아래 시리즈 s는 일부만 %로 표기되어 있고 %로 표기된 부분은 문자열이 된다
import pandas as pd
s = pd.Series(['1', 2, '300%'])
s
0 1
1 2
2 300%
dtype: object
이 s의 dtype을 float로 바꾸려면 %로 된 문자열 부분 때문에 그냥은 쉽지 않다
이럴 때는 아래와 같은 코드를 사용하면 된다
cond1 = s.astype('str').str.contains('%')
s.mask(cond1, s.astype('str').str.replace('%', '').astype('float').div(100)).astype('float')
output
0 1.0
1 2.0
2 3.0
dtype: float64
%외에도 문자열로 섞여있는 다른 값이 있기 때문에 (ex. '1') 마지막에 astype('float')을 한번 더 해준 것이다
유튜브에서 판다스 강의 중입니다
https://www.youtube.com/@KimPandas
'판다스 > 판다스 팁' 카테고리의 다른 글
[pandas] 특정 열의 값으로 데이터 프레임 나눠서 리스트로 만들기 (0) | 2023.08.06 |
---|---|
[pandas] 정규표현식에서 그룹명을 지정하기 (0) | 2023.08.06 |
[pandas] 파일에서 데이터 프레임을 읽어올 때 공통된 열이름이 있을 때 해결책 (0) | 2023.06.25 |
[pandas] 문자열을 csv파일처럼 읽어 데이터 프레임으로 부르고 싶을 때 (0) | 2023.06.25 |
numpy 에서 random 함수를 사용할 때 seed를 생성하는 방법 (0) | 2023.06.14 |