2016-09-09 1 views
6

진수 쉼표를 지원하지, 문제는 파일이 아닌 점의 소수점 구분 (read_html의 기본)로 쉼표를 가지고 있다는 것입니다.pandas.read_html 내가 <code>pandas.read_html</code>를 사용하여 XLM 파일을 읽고 <strong>거의 완벽한</strong> 작동했다

쉼표를 한 파일의 점으로 쉽게 바꿀 수는 있지만 구성에 거의 200 개의 파일이 있습니다. 을 pandas.read_csv으로 설정하면 소수 구분 기호를 정의 할 수 있지만 이유는 모르겠습니다. pandas.read_html 천 단위 구분 기호 만 정의 할 수 있습니다.

이 문제에 대한 안내는 팬더가 열기 전에 쉼표/​​점 교체를 자동화하는 다른 방법이 있습니까? 미리 감사드립니다. ! read_html

def read_html(io, match='.+', flavor=None, header=None, index_col=None, 
       skiprows=None, attrs=None, parse_dates=False, 
       tupleize_cols=False, thousands=',', encoding=None, 
       decimal='.', converters=None, na_values=None, 
       keep_default_na=True): 

함수 헤더의 소스 코드를 찾고

+0

그래서 파일에 1000.21는 1000,21입니까? – zhqiat

+0

@zhqiat 실제로'1.000,21', 천 단위 구분자가 있습니다 –

답변

2

감사합니다. @zhqiat. 나는 pandas을 버전 0.19으로 업그레이드하는 것이 문제를 해결할 것이라고 생각한다. 불행히도 나는 그것을 성취하기위한 쉬운 방법을 찾지 못했습니다. 나는 팬더를 업그레이드하는 튜토리얼을 발견했지만 ubuntu (winXP 사용자)입니다.

나는 마침내 기본적으로 나는이 솔루션은 최고의 아니라는 것을 알고 pandas.Series

result[col] = result[col].apply(lambda x: x.str.replace(".","").str.replace(",",".")) 

의 숫자 유형에 모든 열, 하나 하나, 변환 방법은 here을 기록하여, 해결 방법을 선택했지만 공장. 감사합니다

3

함수 호출에 가능한 소수 구분이 있음을 의미한다.

아래 문서에서 버전 0.19에 추가 된 것처럼 보입니다 (실험 지점에서 조금 더 아래에 있습니다). 팬더를 업그레이드 할 수 있습니까?

10 진수 : str, 기본값 '.' 소수점으로 인식 할 문자 (예 : 유럽 데이터의 경우 ','사용). .. versionadded :: 0.19.0

+0

지금은 마지막 안정 버전 (아나콘다의 기본값)을 사용하고 있습니다. 나는 0.19로 업그레이드하려고 노력할 것이다. pd .__ version__ u'0.18.1 ' 내가 시도하자마자, 나는 돌아올 것이다. –

0

나는 팬더 0.19를 사용하고 있지만 여전히 숫자를 올바르게 변환하지 못합니다. 예를 들어

:

a=pd.read_html(r.text,thousands='.',decimal=',') 

가 140,140 (플로트) 등의 테이블 셀에서 값 "1.401,40"을 인식 할 것이다.

난 그냥 유모 값을 수정, '파블로 A'와 유사한 솔루션을 사용

def to_numeric_comma(series): 
    new=series.apply(lambda x: str(x).replace('.','').replace(',','.')) 
    new=pd.to_numeric(new.replace('nan',pd.np.nan)) 
    return new