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

如何从Python DataFrame单列的字典数据中提取字段并制表?

提取DataFrame中字典字段并转为结构化表格的方法

我运行以下Python代码后得到一个48行1列的pandas DataFrame,该列每行都是包含duration等12个字段的字典。现在需要把这些字典里的字段提取出来,整理成结构化的表格,该怎么做?

代码示例

# 导入库
import amberelectric
from amberelectric.api import amber_api
import pandas as pd

configuration = amberelectric.Configuration(access_token='psk_954ef8ead8c4323b4fe73064186f6362')

# 创建API实例
api = amber_api.AmberApi.create(configuration)

sites = api.get_sites()
site_id = sites[0].id
today = api.get_prices(site_id)

# 生成DataFrame
data = pd.DataFrame(today)

print(type(data))
print(data.shape)

data1 = data.iloc[[0,1,2,3]]
print(data1)

运行输出

<class 'pandas.core.frame.DataFrame'>
(48, 1)
                                               0
0  {'duration': 30.0, 'spot_per_kwh': 10.16542, '...
1  {'duration': 30.0, 'spot_per_kwh': 8.92124, 'p...
2  {'duration': 30.0, 'spot_per_kwh': 6.51428, 'p...
3  {'duration': 30.0, 'spot_per_kwh': 4.74366, 'p...

解决方案

这里提供三种高效的实现方法,任选其一即可:

方法1:使用pd.json_normalize()(推荐)

这是处理字典格式数据最简洁的方式,直接将字典列标准化为结构化表格:

# 提取字典列并转换
structured_df = pd.json_normalize(data[0])

说明:pd.json_normalize()会自动识别字典中的所有键,将其作为新DataFrame的列名,对应的值填充到各行,最终生成48行12列的结构化表格。

方法2:使用apply(pd.Series)

如果你的pandas版本较低,可通过apply方法将每个字典转为Series:

structured_df = data[0].apply(pd.Series)

说明:对列中的每个字典执行pd.Series操作,会把字典的键映射为列,值映射为对应行的元素,最终拼接成完整的结构化DataFrame。

方法3:转为字典列表后构造DataFrame

先将列中的字典提取为列表,再直接构造新的DataFrame:

# 将Series转为字典列表
dict_list = data[0].tolist()
# 构造结构化DataFrame
structured_df = pd.DataFrame(dict_list)

说明:tolist()把原列转换为字典组成的列表,pd.DataFrame()会自动将每个字典作为一行,键作为列名完成转换。

验证结果

运行上述任意方法后,执行print(structured_df.head())即可查看前几行结构化数据,确认每个字段都已成为独立列。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:35:50