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

如何从含字典列表的DataFrame解包数据并生成目标DataFrame?

解决方案

原始输入数据还原

先还原你提供的输入DataFrame结构:

import pandas as pd

# 对应你输入的原始DataFrame
Data = pd.DataFrame({
    'stats': [
        [{'city': None, 'last_time': 1234567}],
        [],
        [{'city': 'Seattle', 'last_time': 45678999876}]
    ]
})

方法一:自定义函数+apply处理

直接针对stats列的每个条目做判断,空列表返回NA,非空则提取字典转为Series:

def unpack_stats(item):
    if not item:
        # 空列表返回包含NA的Series
        return pd.Series([pd.NA, pd.NA], index=['city', 'last_time'])
    else:
        # 提取列表中的字典转为Series
        return pd.Series(item[0])

# 生成结果DataFrame
result = Data['stats'].apply(unpack_stats)

方法二:explode+json_normalize处理

通过展开列表后解析字典,再补全缺失行:

# 展开列表,空列表会转为NaN
exploded_data = Data.explode('stats', ignore_index=False)
# 解析字典列
temp_df = pd.json_normalize(exploded_data['stats'])
# 恢复原始索引并填充缺失值
result = temp_df.reindex(Data.index).fillna(pd.NA)

最终结果

两种方法都会生成你需要的目标DataFrame:

city    last_time
0    None      1234567
1     NaN         NaN
2  Seattle  45678999876

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:16:09