如何将Pandas DataFrame列中嵌套JSON的USD段提取转换为新DataFrame
Pandas提取嵌套JSON中USD字段为结构化DataFrame方案
前置检查
首先确认你的quote列存储的是Python字典类型,而非字符串格式。如果是从csv等文件读取的,默认会被解析为字符串,需要先转换为字典:
import ast import pandas as pd # 转换字符串格式的JSON为Python字典 df['quote'] = df['quote'].apply(ast.literal_eval)
核心实现代码
你之前用pd.json_normalize没有得到预期结果,大概率是没有预先提取USD层级的对象,直接对整个嵌套字典做解析导致的。可以用两种方式实现需求:
方式1:先提取USD对象再生成DataFrame
# 提取每个元素的USD部分,直接转为结构化DataFrame usd_df = pd.DataFrame(df['quote'].map(lambda x: x['USD']).tolist())
方式2:结合json_normalize实现
# 直接对USD层级的对象做规范化解析 usd_df = pd.json_normalize(df['quote'].str.get('USD'))
结果调整
两种方式输出的结果默认会保持原USD字段下的键顺序,如果你需要自定义列顺序,可以手动指定:
# 按需求调整列顺序 usd_df = usd_df[[ 'price', 'volume_24h', 'percent_change_1h', 'percent_change_24h', 'percent_change_7d', 'market_cap', 'last_updated' ]]
如果需要保留原DataFrame除了quote列之外的其他字段,可以直接拼接:
final_df = pd.concat([df.drop('quote', axis=1), usd_df], axis=1)
内容的提问来源于stack exchange,提问作者Davide Serafini
相关产品推荐
相关产品推荐

