首页 > 解决方案 > Pandas DataFrame to_dict 和 from_dict 会丢失列顺序吗?

问题描述

当我调用to_dict它时,它会返回一个普通的字典。但是,普通字典不保留顺序。字典的键是列。因此,如果调用to_dict了一个数据框,然后又调用from_dict了重建该数据框,这是否意味着我可能会丢失列顺序?

标签: python-3.xpandasdataframe

解决方案


在 python 3 中,字典保留了插入键的顺序,因此您的断言不正确:

In [7]: pd.DataFrame.from_dict(pd.DataFrame({'c': [5], 'a': [2], 'b': [1]}).to_dict())
Out[7]:
   c  a  b
0  5  2  1

此外,pandas.DataFrame.to_dict文档还为数据结构(例如 OrderedDict)提供了许多附加选项:

>>> from collections import OrderedDict, defaultdict
>>> df.to_dict(into=OrderedDict)
OrderedDict([('col1', OrderedDict([('row1', 1), ('row2', 2)])),
             ('col2', OrderedDict([('row1', 0.5), ('row2', 0.75)]))])

推荐阅读