DataFrame.to_dict()并不总是可逆的

时间:2015-01-23 09:33:28

标签: python pandas dictionary dataframe

我的主要观点是:

assert_frame_equal(DataFrame.from_dict(df.to_dict()), df)

在某些情况下失败。我希望提供一个可重复的示例,但(i)数据太大而无法发布,并且(ii)为此,我需要提供一个序列化的DataFrame(这正是失败的地方......)

这是一个已知问题吗?我做错了吗?

1 个答案:

答案 0 :(得分:1)

这可能失败的一个原因是df.to_dict()创建了一个Python字典。词典的键不保证按任何特定顺序排列。

DataFrame的列名映射到字典键,并且按照this question,列的顺序在测试DataFrame相等时很重要。

这个事实很容易检查:

>>> df = pd.DataFrame(columns=['a', 'c', 'b'])
>>> pd.util.testing.assert_frame_equal(df, pd.DataFrame(df.to_dict()))
# AssertionError

您可以传入一些keyword arguments来测试以指定要检查或忽略的条件,包括check_names=False(默认情况下为True)。< / p>