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

如何将包含字典的Pandas Series转换为以AAA、BBB、CCC为列名的DataFrame

解决Pandas Series转字典列表DataFrame的问题

嘿,我刚好踩过这个坑,马上帮你搞定!

你遇到的问题核心在于:pd.DataFrame.from_dict(data)并不适配每个元素都是字典的Series——这个方法默认会把Series的索引当作字典键,把每个字典当作对应值,所以结果自然和原Series没区别。

正确解决方案:直接用pd.DataFrame()构造函数

当你把每个元素都是字典的Series传给pd.DataFrame()时,Pandas会自动把每个字典展开成一行,字典的键会直接成为DataFrame的列名,完美匹配你的需求。

示例代码:

import pandas as pd

# 模拟你得到的Series
data = pd.Series([
    {'AAA': '111', 'BBB': '111', 'CCC': '111'},
    {'AAA': '222', 'BBB': '222', 'CCC': '222'},
    {'AAA': '333', 'BBB': '333', 'CCC': '333'}
], name='table')

# 一步转换为目标DataFrame
df = pd.DataFrame(data)
print(df)

预期输出:

AAA  BBB  CCC
0  111  111  111
1  222  222  222
2  333  333  333

备选方法(适配复杂场景)

如果你的字典存在嵌套结构,或者需要更灵活的处理逻辑,也可以用apply把每个字典转成Series:

df = data.apply(pd.Series)

这个方法和直接用pd.DataFrame(data)效果完全一致,但在处理嵌套数据时会更顺手。

为什么你的原方法失效?

pd.DataFrame.from_dict()的设计初衷是处理键为列名、值为列数据的字典,比如:

# 这种结构适合用from_dict
dict_data = {
    'AAA': ['111', '222', '333'],
    'BBB': ['111', '222', '333'],
    'CCC': ['111', '222', '333']
}
df = pd.DataFrame.from_dict(dict_data)

而你的数据是字典组成的Series,所以直接用DataFrame构造函数才是正确路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:17:46