python/pandas 활용

pandas datetime, 숫자 타입 변환

Memory! 2023. 8. 13. 01:19
728x90
반응형

1. pandas datetime 변환

- pandas의 DataFrame 에서 datatime 형태로 생긴 데이터는 to_datetime을 이용하여 해당 열의 data type을 변경할 수 있습니다.

import pandas as pd
df = pd.DataFrame(['2018-10-26 12:00:00', '2018-10-26 13:00:15'], columns={"a"})

df를 출력해보면 아래와 같다.

  a
0 2018-10-26 12:00:00
1 2018-10-26 13:00:15

해당 a column의 datatype을 보면..? object 타입으로 나온다. object type의 경우 날짜 타입이 아니므로 해당 열의 데이터는 연산이 불가능 한 상태입니다.

 

0    2018-10-26 12:00:00
1    2018-10-26 13:00:15
Name: a, dtype: object

 

해당 column을 to_datetime을 통해 datetime으로 변경할 수 있습니다.

df['a'] = pd.to_datetime(df['a'])

df['a']의 값을 찍어보면 datetime으로 column의 타입이 변경된걸 볼 수 있습니다.

 

0   2018-10-26 12:00:00
1   2018-10-26 13:00:15
Name: a, dtype: datetime64[ns]

 

 

2. 숫자 형식의 데이터가 있는 column 숫자 type의 column으로 변경하기

- dataframe의 데이터 형태가 숫자 형태를 띄고 있으나 str 으로 값이 들어있는 경우 한번에 숫자 형 column으로 변경이 가능합니다.

import pandas as pd
df = pd.DataFrame({'a' : ['2018-10-26 12:00:00', '2018-10-26 13:00:15'], 
                   'b' : ['1', '2'],
                   'c' : ['1.5', '5.5']
                  })
  a b c
0 2018-10-26 12:00:00 1 1.5
1 2018-10-26 13:00:15 2 5.5

df['b']와 df['c'] 의 타입은 

0    1
1    2
Name: b, dtype: object
0    1.5
1    5.5
Name: c, dtype: object

 

dataframe의 pd.apply 와 pd.to_numeric을 활용하면 int float 타입으로 변경이 가능합니다.

df = df.apply(pd.to_numeric)

하지만 위와 같이 적용하면 a 컬럼의 타입 때문에 에러가 발생하며 변환이 되지 않습니다.

ValueError: Unable to parse string "2018-10-26 12:00:00" at position 0

이 경우 errors = 'ignore'를 추가 parameter로 넣어주면 가능한 columns만 변환 합니다.

df = df.apply(pd.to_numeric, errors='ignore')
0    1
1    2
Name: b, dtype: int64
0    1.5
1    5.5
Name: c, dtype: float64

errors 옵션의 종류는 아래 공식 페이지에서 확인 후 사용하세요.

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html

 

pandas.DataFrame.apply — pandas 2.0.3 documentation

next pandas.DataFrame.applymap

pandas.pydata.org

 

728x90
반응형