2017-12-13 14 views
1

팬더의 read_csv (완전히 판다 유형 유추에 의존)를 사용하여 .csv를 읽는 간단한 코드를 작성했습니다.arrow_table = pa.Table.from_pandas (df) ... Python 개체를 String/UTF8로 변환하는 중 오류가 발생했습니다.

arrow_table = pa.Table.from_pandas(df)"): Error converting to Python objects to String/UTF8 

이 문제를 해결하기 위해 인터넷에서 유용한 정보를 찾을 수 없습니다. pyarrow.from_pandas (type = ...)에서 'type'매개 변수를 사용하는 방법

고맙습니다.

$ python pqwrite2.py 

pyarrow version = 0.7.1 

    from_size = 298877474 bytes 

sys:1: DtypeWarning: Columns (23,28) have mixed types. Specify dtype option on import or set low_memory=False. 
id         int64 
... 
pid         object 
mnemonic       object 
supplier_key      float64 
generic        object 
trade_name       object 
description       object 
strength       object 
form        object 
ndc         object 
note        object 
pack_size       float64 
pack_size_text      object 
pack_type       object 
route_description     object 
... 
status        object 
hidden_flag       object 
updated       float64 
created_at       object 
updated_at       object 
medid        object 



dtype: object 
write_to_parquet(df, parquet_output/h_billing_codes.SNAPPY.parquet, SNAPPY) ... 
ERROR:root:2017-12-13 02:22:48 EXCEPTION IN (pqwrite2.py, LINE 23 "arrow_table = pa.Table.from_pandas(df)"): Error converting to Python objects to String/UTF8: Got Python object of type float but can only handle these types: str, bytes 
2017-12-13 02:22:48 EXCEPTION IN (pqwrite2.py, LINE 23 "arrow_table = pa.Table.from_pandas(df)"): Error converting to Python objects to String/UTF8: Got Python object of type float but can only handle these types: str, bytes 
+0

기본적으로 read_csv는 테이크 탭을 분리 자로 사용합니다. 데이터에 다른 구분 기호가있는 것 같습니다. –

답변

1

전체 오류 메시지가 부동 소수점 값, 문자열을 모두 포함하는 열가 마치

Error converting to Python objects to String/UTF8: Got Python object of type float but can only handle these types: str, bytes 

이다. pandas.read_csv 메시지에 DtypeWarning: Columns (23,28) have mixed types와 관련하여 경고했습니다. 이 문제는 대용량 파일에서 발생할 수 있습니다. Arrow가 모든 동일한 유형의 데이터를 제공하도록 이러한 문제가있는 열에 대해 명시적인 유형을 나타내는 것이 좋습니다.

향후 버전의 Arrow에서는 이러한 경우 "문제가되는 유형 중 하나를 위생적으로 변환하거나 변환 할 수있는 기능이있는"Union "유형 열을 지원할 수 있습니다 (예 :"문자열이 아닌 모든 것을 캐스팅하십시오. 문자열 "), 그러나 이것이 언제 구현 될지 확신하지 못합니다.

0

내 스크립트에 대해 동일한 오류 메시지가 표시되었습니다.

import pandas as pd 
import pyarrow as pa 
df = pd.read_csv("FILENAME.csv", low_memory=False) 
arrow_table = pa.Table.from_pandas(df) 

low_memory=False kwargs로를 pd.read_csv 것이 더 나은 일을 할 수있는 오류가 멀리 갈 수 있습니다 : pqwrite.py에 의해 오류 메시지 출력의 일부를 읽고 내가 노력

Specify dtype option on import or set low_memory=False.

말한다 파일을 읽을 때 df에 대한 유형 유추. 이제 df에는 혼합 유형의 열이 없습니다.

나는 low_memory=False을 읽는 과정이 느려지고 더 많은 메모리를 사용할 수 있다고 생각합니다.