본문 바로가기
파이썬

파이썬 Pandas DataFrame에서 쉼표가있는 숫자 문자열을 부동 소수점으로 변환

by º기록 2020. 12. 21.
반응형

수천 마커에 대해 쉼표가있는 문자열로 숫자를 포함하는 DataFrame이 있습니다. 수레로 변환해야합니다.

a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)

locale.atof를 사용해야한다고 생각합니다. 과연

df[0].apply(locale.atof)

예상대로 작동합니다. 나는 일련의 수레를 얻습니다.

하지만 DataFrame에 적용하면 오류가 발생합니다.

df.apply(locale.atof)

TypeError : ( "시리즈를"로 변환 할 수 없습니다. 인덱스 0에서 발생했습니다. ")

df[0:1].apply(locale.atof)

또 다른 오류가 있습니다.

ValueError : ( 'invalid literal for float () : 1,200', u'occurred at index 0 ')

그렇다면이 DataFrame 문자열을 부동의 DataFrame으로 어떻게 변환합니까?

 

해결 방법

 


df.read_csv('foo.tsv', sep='\t', thousands=',')

이 방법은 별도의 단계로 작업을 수행하는 것보다 더 효율적일 수 있습니다.


In [ 9]: import locale

In [10]: from locale import atof

In [11]: locale.setlocale(locale.LC_NUMERIC, '')
Out[11]: 'en_GB.UTF-8'

In [12]: df.applymap(atof)
Out[12]:
      0        1
0  1200  4200.00
1  7000    -0.03
2     5     0.00

 

참조 페이지 https://stackoverflow.com/questions/22137723

 

 

반응형

댓글