23년 7월의 공부 part 1 - ValueError for convert to float, 일치하지 않는 패턴 찾기
포스트
취소

23년 7월의 공부 part 1 - ValueError for convert to float, 일치하지 않는 패턴 찾기

2023년 7월 동안 검색하고 공부한 것들을 정리한 내용입니다.

1. ValueError: could not convert string to float

에러 로그

: ValueError: could not convert string to float: ''

원인

: '' 값이 포함된 string에 대해 float로 dtype을 변경하려고 함.

해결 방법

: '' 값을 np.nan과 같은 값으로 변경함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy as np
import pandas as pd

df_tmp = pd.DataFrame([['a', '1'], ['b', '']], columns=['var_str', 'var_float'])
df_tmp
# 	var_str	var_float
# 0	a	1
# 1	b	

df_tmp.astype({'var_str':'object', 'var_float':'float'})
# ...
# ValueError: could not convert string to float: ''

pd.DataFrame(np.where(df_tmp=='',np.nan, df_tmp), columns=['var_str', 'var_float']).astype({'var_str':'object', 'var_float':'float'})
# 	var_str	var_float
# 0	a	1.0
# 1	b	NaN

2. 일치하지 않는 패턴 찾기 in 정규표현식

목표

  1. ,를 구분자로 문자열을 분리하고자 함.
  2. ,\s (뒤에 whitesapce 포함)에 대해서는 구분자로 하지 않음.

방법

  • (?!abc)
    패턴에서 ‘abc’가 나오지 않는 경우에 일치하다고 판단함.
1
2
3
4
5
6
import re

_string_val = 'A, B,C,D'
sep = r',(?!\s)'
re.split(sep, _string_val)
# ['A, B', 'C', 'D']
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.