2017-04-07 56 views
0

我想從csv文件創建地板文件。出於測試目的,我有一段代碼讀取一個文件,並將其轉換爲熊貓數據幀,然後轉換爲pyarrow表。此表然後存儲在AWS S3上,並希望在表上運行配置單元查詢。實木複合地板創建從熊貓數據框轉換爲pyarrow表不適用於對象dtype

Inputfile中的內容:

YEAR|WORD 
2017|Word 1 
2018|Word 2 

代碼:

dataFrame=pd.read_csv(inputFile, sep='|') 
print(dataFrame) 
print(dataFrame.dtypes) 
print(dataFrame.columns) 
dataFrame['C1'] = dataFrame['C1'].astype('str') 
print(dataFrame.dtypes) 
table=pa.Table.from_pandas(dataFrame)#,schema=pa.string()) 
pq.write_table(table, outputFile) 

寫入pyarrow表後,我詢問了拼花文件,以確保數據良好將存儲在S3。然而結果很奇怪:

+--------+--------------+ 
| YEAR |  WORD  | 
+--------+--------------+ 
| 2017 | [[email protected] | 
| 2018 | [[email protected] | 
+--------+--------------+ 

不知何故int值顯示很好,但是object/str值沒有被正確轉換。

感謝您對此的幫助。

謝謝。

+0

嗨,你會介意https://issues.apache.org打開的問題/ jira/browse/ARROW,我們可以幫助調試嗎? –

+0

這是一個跟蹤此問題的箭頭問題:https://issues.apache.org/jira/browse/ARROW-785 – Jeff

+0

更新了JIRA的更多細節。使用以下版本 – Ash

回答

0

這個複製對我來說很適合往返。請註明您的平臺&版本pythonpandaspyarrow

在3.6/macox(也工作2.7)

In [1]: import pandas as pd 

In [2]: import pyarrow as pa 

In [3]: pd.__version__ 
Out[3]: '0.19.2' 

In [4]: pa.__version__ 
Out[4]: '0.2.0' 

In [5]: data = """YEAR|WORD 
    ...: 2017|Word 1 
    ...: 2018|Word 2 
    ...: """ 

In [6]: df = pd.read_csv(StringIO(data), sep='|') 

In [7]: df 
Out[7]: 
    YEAR WORD 
0 2017 Word 1 
1 2018 Word 2 

In [8]: df.dtypes 
Out[8]: 
YEAR  int64 
WORD object 
dtype: object 

In [9]: table=pa.Table.from_pandas(df) 

In [10]: import pyarrow.parquet as pq 

In [12]: pq.write_table(table, 'foo.pk') 

In [13]: pq.read_table('foo.pk').to_pandas() 
Out[13]: 
    YEAR WORD 
0 2017 Word 1 
1 2018 Word 2 

In [14]: pq.read_table('foo.pk').to_pandas().dtypes 
Out[14]: 
YEAR  int64 
WORD object 
dtype: object 
+0

: >>> PD .__ version__ u'0.19.2' >>>進口pyarrow爲PA >>> PA .__ version__ '0.2.0' 問題似乎通過查詢時所發生的事情蜂巢。 上鑲木文件的頂部創建蜂房表象下面這樣: %SQL CREATE EXTERNAL TABLE IF NOT EXISTS schema_abc.parquet_table_name( YEAR INT ,WORD STRING ) 存儲爲PARQUET LOCATION「S3,// BUCKET_NAME /文件夾/ p​​arquet_files /' ***請注意:parquet_files文件夾中包含testFile.parquet文件。 – Ash