2017-12-13 7 views
1

pandasの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では、このような場合に「連合」型の列を生成することができます。問題のある型の1つを消化または変換する機能があります(たとえば、文字列 ")が、これはいつ実装されるのか分かりません。

0

私のスクリプトには同じエラーメッセージがありました。

Specify dtype option on import or set low_memory=False.

を言うpqwrite.pyによるエラーメッセージ出力の一部を読んで私が試した:

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

pd.read_csvためlow_memory=False kwargsからは、それがより良い仕事を行うことができますようにエラーが離れて行かせますファイルを読み込むときにdfの型推論を行います。だからdfには混合型の列はありません。

私はlow_memory=Falseが読み込みプロセスを遅くし、より多くのメモリを使用すると信じています。

関連する問題