我的主要观点是:
assert_frame_equal(DataFrame.from_dict(df.to_dict()), df)
在某些情况下失败。我希望提供一个可重复的示例,但(i)数据太大而无法发布,并且(ii)为此,我需要提供一个序列化的DataFrame(这正是失败的地方......)
这是一个已知问题吗?我做错了吗?
答案 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>