You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame转为格式化的Records字典?

问题描述

我创建了如下数据:

technologies = [
            ("a","2","3"),
            ("4","5","6"),
            ("7","8","9")
            ]
df = pd.DataFrame(technologies,columns = ['C1','C2','C3'])
print(df)

得到的DataFrame如下:

C1 C2 C3
0  a  2  3
1  4  5  6
2  7  8  9

随后我使用df.to_dict('records')将DataFrame转为Records字典:

df2 = df.to_dict('records')
print(df2)

得到的输出为:

[{'C1': 'a', 'C2': '2', 'C3': '3'}, {'C1': '4', 'C2': '5', 'C3': '6'}, {'C1': '7', 'C2': '8', 'C3': '9'}]

但我希望得到如下格式化的输出:

[{'C1': 'a',
  'C2': '2', 
  'C3': '3'}, 
 {'C1': '4', 
  'C2': '5', 
  'C3': '6'}, 
 {'C1': '7', 
  'C2': '8', 
  'C3': '9'}]

作为编程新手,请问是否可以实现该预期输出?

解决方案

当然可以实现,以下两种实用方法能帮你得到格式化的输出:

方法1:用pprint模块美化打印

Python内置的pprint(pretty print)模块专门用于美化复杂数据结构的输出,代码示例:

import pandas as pd
import pprint

technologies = [
            ("a","2","3"),
            ("4","5","6"),
            ("7","8","9")
            ]
df = pd.DataFrame(technologies,columns = ['C1','C2','C3'])
df2 = df.to_dict('records')
# indent参数控制缩进空格数,设置为2即可匹配预期格式
pprint.pprint(df2, indent=2)

运行后会直接输出你想要的排版格式,还能通过width参数调整每行的字符宽度,适配不同场景。

方法2:用json.dumps指定缩进

如果需要更灵活的格式控制,可以借助json模块的dumps方法,代码示例:

import pandas as pd
import json

technologies = [
            ("a","2","3"),
            ("4","5","6"),
            ("7","8","9")
            ]
df = pd.DataFrame(technologies,columns = ['C1','C2','C3'])
df2 = df.to_dict('records')
# indent=2设置缩进空格数,ensure_ascii=False避免中文转义(这里无中文也可省略)
print(json.dumps(df2, indent=2, ensure_ascii=False))

注意:这种方法会把字典里的单引号转为双引号,如果必须保留单引号,优先选择pprint方法。

补充小技巧

如果是在Jupyter Notebook环境中,直接输入变量名(比如df2)并运行,Notebook会自动美化显示数据结构,无需额外代码。

内容的提问来源于stack exchange,提问作者Mạnh Tô

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:20:49