판다스 replace 안 됨

조회수 452회

숫자 뒤 .0을 없애고 싶습니다

>>> ekfos_df.SPT
0      104.0
1          6
2         18
>>> ekfos_df.SPT.replace('.0', '')
0      104.0
1          6
2         18
>>> ekfos_df.SPT.str.replace('.0', '')
<input>:1: FutureWarning: The default value of regex will change from True to False in a future version.
0      NaN
1        6
2       18
>>> ekfos_df.loc[:, 'SPT'].replace('.0', '')
0      104.0
1          6
2         18
ekfos_df.loc[:, 'SPT'].str.replace('.0', '')
<input>:1: FutureWarning: The default value of regex will change from True to False in a future version.
0      NaN
1        6
2       18

아무리 해도 문자열 치환이 안 되는데 뭐가 문제일까요

1 답변

  • >>> pd.__version__
    '1.4.2'
    >>> df
         SPT
    0  104.0
    1      6
    2     18
    >>> df.SPT
    0    104.0
    1        6
    2       18
    Name: SPT, dtype: object
    >>> df.SPT.replace("\.0", "", regex=True)
    0    104
    1      6
    2     18
    Name: SPT, dtype: object
    >>> 
    

    저도 약간 이해가 안 가긴 하는데, 이렇게는 되네요.

    • 판다스 버전 1.4.2로 업데이트하고 답변 주신 것처럼 했는데도 안 돼요 뭐가 문제일까요 ㅠ 김지용 2022.5.5 23:38
    • 참고로 for i, j in ekfos_df.SPT.iteritems(): 로 반복문 돌려서 type하나씩 찍어보면 .0들어간 부분은 float로 나오고 나머지는 str로 나와요. 그래서 int로 바꾸고 다시 str로 바꿔서 없애긴 했는데 그래도 ekfos_df.SPT.str.replace('.0', '')이 동작해야 하는데 안 해서 좀 답답하네요 김지용 2022.5.6 00:05
    • @김지용 : replace 메소드는 앞에 붙은 str 으로 알 수 있듯이 str 타입에서 쓸 수 있는 메소드에요. float 형 값에는 쓸 수 없는 게 당연하죠. nowp 2022.5.6 08:10
    • str 붙이면 type이 str로 변하는 건지 알았는데 그게 아니라는 말씀이시죠? 김지용 2022.5.7 06:42

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)