2016-09-02 16 views
0

Excelドキュメントのコンテンツをpandasデータフレームに抽出し、そのデータフレームをHDF5ファイルに書きたいとします。そうするために、私はこれをやった:Pandasを使用してExcelからHDF5に変換

xls_df = pd.read_excel(fn_xls) 
xls_df.to_hdf(fn_h5, 'table', format='table', mode='w') 

これは、次のエラーが発生:

TypeError: Cannot serialize the column [Col1] because its data contents are [unicode] object dtype

私はExcelファイルからデータフレームのconvert.objects()を使用してみましたが、このdoesnの(そしてconvert.objects()は非推奨です)。これについて行くための提案はありますか?ここ

Excelファイルにはほとんど情報である第1及び第2の列は文字列で

<class 'pandas.core.frame.DataFrame'> 
RangeIndex: 101 entries, 0 to 100 
Data columns (total 5 columns): 
Col1     101 non-null object 
Col2     101 non-null object 
Col3     94 non-null float64 
Col4     98 non-null object 
Col5     93 non-null float64 
dtypes: float64(2), object(3) 

、第4列は、1つの文字列を有しているが、ほとんどの整数および第3及び第5列は整数でれます。

+2

データフレームのいくつかのサンプルエントリを表示しますか? –

答えて

0

"Col4"列の文字列と整数のデータ型が混在すると、 "テーブル"形式のHDF5に変換するときにエラーが発生します。

あなたは(NaNにして、文字列)フロートにCOL4内の数字を変換する必要があり、「テーブル」形式HDF5に保存するには:

df["Col4"] = pd.to_numeric(df["Col4"], errors="coerce")

をや文字列に列のすべてを変換します。

df["Col4"] = df["Col4"].astype(str)

また、固定のhdf5形式を使用すると、列にデータ型が混在することがあります。これにより、混合データ型の列がPythonのpickle形式で保存され、現在はPerformanceWarningが与えられます。

df.to_hdf(outpath, 'yourkey', format='fixed', mode='w')

関連する問題