我需要将包含多索引行和多索引列(每个2级)的数据帧写入csv文件。数据帧也需要可靠地从csv恢复。我知道建议不要使用csv来执行此操作,而应使用HDF5文件(df.to_hdf()
,df.read_hdf()
。但是必须与外部系统交换数据,因此我必须使用csv。我的问题是我不知道是否以及如何定义每个列标题的类型(两个级别),每个行索引的类型(两个级别)以及column * row矩阵中包含的数据类型。
在单元测试期间,我使用例如
pd.testing.assert_frame_equal(written_df, read_df)
测试写入和读取数据帧是否一致。我举个例子
l = Index([10.0, 11.0, 12.0, 13.0, 'human_readable', 'machine_readable'], dtype='object'), r = Index(['10.0', '11.0', '12.0', '13.0', 'human_readable', 'machine_readable'], dtype='object')
obj = 'MultiIndex level [1]'
E AssertionError: MultiIndex level [1] are different
E
E Attribute "inferred_type" are different
E [left]: mixed
E [right]: string
因为pandas没有机会自己正确地推断/解释列名的类型(10.0
,11.0
等)。这会导致我的测试用例出现误报。
如何在书写和显式阅读期间定义这些类型?