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

DataFrame.to_dict() is not always invertible

我的主要观点是:

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

在某些情况下会失败。我很乐意提供一个可重现的示例,但 (i) 数据太大 post,并且 (ii) 为此,我需要提供一个序列化的 DataFrame(这正是失败的地方...... .)

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

失败的一个原因是 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) .