如何从含字典列表的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
相关产品推荐
相关产品推荐

