반응형
팬더에 쉼표가 있는 숫자 문자열을 부동으로 변환합니다. DataFrame
저는 숫자를 문자열로 포함하고 천 개의 마커를 쉼표로 표시하는 DataFrame을 가지고 있습니다.저는 그것들을 부유물로 변환해야 합니다.
a = [['1,200', '4,200'], ['7,000', '-0.03'], [ '5', '0']]
df=pandas.DataFrame(a)
local.atof를 사용해야 할 것 같습니다.실제로.
df[0].apply(locale.atof)
예상대로 작동합니다.나는 일련의 부유물을 얻습니다.
하지만 데이터 프레임에 적용하면 오류가 발생합니다.
df.apply(locale.atof)
유형 오류: ("시리즈를 ""로 변환할 수 없습니다. u'는 인덱스 0'에서 발생했습니다.)
그리고.
df[0:1].apply(locale.atof)
또 다른 오류 발생:
ValueError:('float(): 1,200'에 대한 잘못된 리터럴, u'incured at index 0')
그럼 이걸 어떻게 변환합니까?DataFrame
데이터 프레임에 연결할 수 있습니까?
csv에서 읽고 있다면 수천 arg를 사용할 수 있습니다.
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
다음과 같이 한 번에 하나의 열을 변환할 수 있습니다.
df['colname'] = df['colname'].str.replace(',', '').astype(float)
당신은 판다를 사용해도 됩니다.Series.str.replace 메서드:
df.iloc[:,:].str.replace(',', '').astype(float)
이 메서드는 문자열의 쉼표를 제거하거나 바꿀 수 있습니다.
이것은 '-55,00' 또는 '5.500,00'과 같은 문자열에 대해 작동하며 각각 -55.00 및 5500.00 플로트로 변환합니다.
df['colname'] = df['colname'].str.replace('.','', regex=True).str.replace(',', '.', regex=True).astype(float)
언급URL : https://stackoverflow.com/questions/22137723/convert-number-strings-with-commas-in-pandas-dataframe-to-float
반응형
'programing' 카테고리의 다른 글
REST API용 spring-boot-starter-web과 spring-boot-starter-data-rest의 차이점 (0) | 2023.07.21 |
---|---|
OracleDB에서 "예상 NUMBER but got BINARY"를 가져오지 않고 Long 값의 null을 쿼리하려면 어떻게 해야 합니까? (0) | 2023.07.21 |
MapStruct 구현이 Spring Boot Web Application에서 작동하지 않습니다. (0) | 2023.07.21 |
스프링 부트 jpa 종속성을 추가할 때 이름이 'entityManagerFactory'인 빈을 생성하는 동안 오류가 발생했습니다. (0) | 2023.07.21 |
DBMS_RANDOM으로 Oracle에서 임의 날짜 생성 (0) | 2023.07.21 |