如何可靠地将具有多索引列和多索引行的数据帧写入到csv文件或从中读取?

时间:2020-07-06 16:08:51

标签: python pandas csv export-to-csv

我需要将包含多索引行和多索引列(每个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.011.0等)。这会导致我的测试用例出现误报。

如何在书写和显式阅读期间定义这些类型?

0 个答案:

没有答案