pandas.DataFrame.to_dict#

DataFrame.to_dict(orient='dict', *, into=<class 'dict'>, index=True)[源代码][源代码]#

将 DataFrame 转换为字典。

键值对的类型可以通过参数自定义(见下文)。

参数:
orientstr {‘dict’, ‘list’, ‘series’, ‘split’, ‘tight’, ‘records’, ‘index’}

确定字典值的类型。

  • ‘dict’ (默认) : 类似字典 {列 -> {索引 -> 值}}

  • ‘list’ : 类似字典 {column -> [values]}

  • ‘series’ : 类似字典 {列 -> Series(值)}

  • ‘split’ : 像字典一样 {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}

  • ‘tight’ : 像字典 {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values], ‘index_names’ -> [index.names], ‘column_names’ -> [column.names]}

  • ‘records’ : 列表形式 [{column -> value}, … , {column -> value}]

  • ‘index’ : 类似字典 {index -> {column -> value}}

Added in version 1.4.0: ‘tight’ 作为 orient 参数的允许值

进入类, 默认字典

用于返回值中所有映射的 collections.abc.MutableMapping 子类。可以是实际的类或您想要的映射类型的空实例。如果您想要一个 collections.defaultdict,必须传递初始化后的实例。

索引布尔值, 默认为 True

是否在返回的字典中包含索引项(如果 orient 是 ‘tight’,则还包括 index_names 项)。当 orient 是 ‘split’ 或 ‘tight’ 时,只能为 False。请注意,当 orient 是 ‘records’ 时,此参数不生效(索引项始终不包含)。

Added in version 2.0.0.

返回:
dict, list 或 collections.abc.MutableMapping

返回一个表示 DataFrame 的 collections.abc.MutableMapping 对象。结果的转换取决于 orient 参数。

参见

DataFrame.from_dict

从字典创建一个 DataFrame。

DataFrame.to_json

将 DataFrame 转换为 JSON 格式。

例子

>>> df = pd.DataFrame(
...     {"col1": [1, 2], "col2": [0.5, 0.75]}, index=["row1", "row2"]
... )
>>> df
      col1  col2
row1     1  0.50
row2     2  0.75
>>> df.to_dict()
{'col1': {'row1': 1, 'row2': 2}, 'col2': {'row1': 0.5, 'row2': 0.75}}

你可以指定返回方向。

>>> df.to_dict("series")
{'col1': row1    1
         row2    2
Name: col1, dtype: int64,
'col2': row1    0.50
        row2    0.75
Name: col2, dtype: float64}
>>> df.to_dict("split")
{'index': ['row1', 'row2'], 'columns': ['col1', 'col2'],
 'data': [[1, 0.5], [2, 0.75]]}
>>> df.to_dict("records")
[{'col1': 1, 'col2': 0.5}, {'col1': 2, 'col2': 0.75}]
>>> df.to_dict("index")
{'row1': {'col1': 1, 'col2': 0.5}, 'row2': {'col1': 2, 'col2': 0.75}}
>>> df.to_dict("tight")
{'index': ['row1', 'row2'], 'columns': ['col1', 'col2'],
 'data': [[1, 0.5], [2, 0.75]], 'index_names': [None], 'column_names': [None]}

你也可以指定映射类型。

>>> 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)]))])

如果你想使用 defaultdict,你需要初始化它:

>>> dd = defaultdict(list)
>>> df.to_dict("records", into=dd)
[defaultdict(<class 'list'>, {'col1': 1, 'col2': 0.5}),
 defaultdict(<class 'list'>, {'col1': 2, 'col2': 0.75})]