발생
어떤 값을 int로 형변환 할때 ValueError: invalid literal for int() with base 10: '' 에러가 발생하였다.
import pandas as pd
data = {
'column1': ['0.001', '0.001', '0.001', '0.001'],
'column2': ['0.001', '0.001', '0.001', '0.001'],
'column3': ['0.001', '0.001', '0.001', '0.001'],
}
df = pd.DataFrame(data)
print(df)
#결과
# column1 column2 column3
# 0 0.001 0.001 0.001
# 1 0.001 0.001 0.001
# 2 0.001 0.001 0.001
# 3 0.001 0.001 0.001
df['column1'].astype(int)
#ValueError: invalid literal for int() with base 10: '0.001'
원인
소수점이 포함된 str를 int()형변환 할때 발생한다.
Python Can not change 0.xxx string to int
해결
1) float로 먼저 형변환 한뒤 int로 변경해서 소수점을 제거하면 된다.
import pandas as pd
data = {
'column1': ['0.001', '0.001', '0.001', '0.001'],
'column2': ['0.001', '0.001', '0.001', '0.001'],
'column3': ['0.001', '0.001', '0.001', '0.001'],
}
df = pd.DataFrame(data)
df['column1']=df['column1'].astype(float)
df['column1']=df['column1'].astype(int)
print(df)
# column1 column2 column3
# 0 0 0.001 0.001
# 1 0 0.001 0.001
# 2 0 0.001 0.001
# 3 0 0.001 0.001
2) apply와 split을 사용해서 . 뒤의 값들을 날려주면 된다.
import pandas as pd
data = {
'column1': ['0.001', '0.001', '0.001', '0.001'],
'column2': ['0.001', '0.001', '0.001', '0.001'],
'column3': ['0.001', '0.001', '0.001', '0.001'],
}
df = pd.DataFrame(data)
df['column1'] = df['column1'].apply(lambda x: x.split('.')[0])
print(df)
# column1 column2 column3
# 0 0 0.001 0.001
# 1 0 0.001 0.001
# 2 0 0.001 0.001
# 3 0 0.001 0.001
끝.
728x90
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python/pyautogui] 마우스 움직이기 + 클릭 + 특정 키 조합으로 중단하기 (0) | 2023.12.06 |
---|---|
ModuleNotFoundError: No module named 'sklearn' 해결법 - solved (1) | 2023.11.26 |
[Python / 파이썬]TypeError: expected string or bytes-like object error 해결법 -solved (0) | 2023.11.21 |
[Python / 파이썬] Dataframe xlsx or csv append(누적) 저장 방법 (0) | 2023.11.20 |
[Python/파이썬] referenced before assignment error - solved (0) | 2023.11.13 |