使用 Pandas 从 Excel 转换为 HDF5
Converting from Excel to HDF5 using Pandas
我想将 Excel 文档的内容提取到 pandas 数据帧中,然后将该数据帧写入 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() ,但这不起作用(并且不推荐使用 convert.objects() )。对此有什么建议吗?
这里有一些关于 Excel 文件的信息:
<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)
第一列和第二列是字符串,第四列有一个字符串但大部分是整数,第三列和第五列是整数。
"Col4" 列中的混合字符串和整数数据类型导致在以 "table" 格式转换为 HDF5 时出错。
要保存为 hdf5 "tables" 格式,您需要将 Col4 中的数字转换为浮点数(将字符串转换为 NaN):
df["Col4"] = pd.to_numeric(df["Col4"], errors="coerce")
或者将列中的所有内容都转换为字符串:
df["Col4"] = df["Col4"].astype(str)
或使用允许列具有混合数据类型的 "fixed" hdf5 格式。这会将混合数据类型列保存在 python pickle 格式中,并且当前会给出 PerformanceWarning。
df.to_hdf(outpath, 'yourkey', format='fixed', mode='w')
我想将 Excel 文档的内容提取到 pandas 数据帧中,然后将该数据帧写入 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() ,但这不起作用(并且不推荐使用 convert.objects() )。对此有什么建议吗?
这里有一些关于 Excel 文件的信息:
<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)
第一列和第二列是字符串,第四列有一个字符串但大部分是整数,第三列和第五列是整数。
"Col4" 列中的混合字符串和整数数据类型导致在以 "table" 格式转换为 HDF5 时出错。
要保存为 hdf5 "tables" 格式,您需要将 Col4 中的数字转换为浮点数(将字符串转换为 NaN):
df["Col4"] = pd.to_numeric(df["Col4"], errors="coerce")
或者将列中的所有内容都转换为字符串:
df["Col4"] = df["Col4"].astype(str)
或使用允许列具有混合数据类型的 "fixed" hdf5 格式。这会将混合数据类型列保存在 python pickle 格式中,并且当前会给出 PerformanceWarning。
df.to_hdf(outpath, 'yourkey', format='fixed', mode='w')