如何将指定JSON文件转换为目标pandas DataFrame格式?
问题:提取JSON数据生成指定结构的DataFrame
原始JSON数据结构如下:
[{'timestamp': '2013-04-30T00:00:00.000Z', 'searchInterval': '2880', 'btcDominance': 94.3854, 'ethDominance': 0, 'quote': [{'name': 'USD', 'timestamp': '2013-04-30T00:00:00.000Z', 'totalMarketCap': 1686950016.0, 'totalVolume24H': 0.0, 'totalVolume24HReported': 0.0, 'altcoinVolume24H': 0.0, 'altcoinVolume24HReported': 0.0, 'altcoinMarketCap': 94716304.0, 'originalScore': '1367280120'}], 'score': 1367280000000.0}, {'timestamp': '2013-05-02T00:00:00.000Z', 'searchInterval': '2880', 'btcDominance': 94.0775, 'ethDominance': 0, 'quote': [{'name': 'USD', 'timestamp': '2013-05-02T00:00:00.000Z', 'totalMarketCap': 1333880064.0, 'totalVolume24H': 0.0, 'totalVolume24HReported': 0.0, 'altcoinVolume24H': 0.0, 'altcoinVolume24HReported': 0.0, 'altcoinMarketCap': 78998704.0, 'originalScore': '1367452920'}], 'score': 1367452800000.0}, ... ]
需要生成仅包含timestamp和totalMarketCap字段的DataFrame,格式如下:
timestamp totalMarketCap 0 2013-04-30T00:00:00.000Z 1686950016.0 ... ... ...
解决方案
情况1:数据已加载到Python变量中
假设JSON数据已存储在data变量中,使用Pandas处理:
import pandas as pd # 将原始数据转为DataFrame df_raw = pd.DataFrame(data) # 提取所需字段:上层的timestamp,以及quote列表中第一个元素的totalMarketCap df = df_raw[['timestamp']].copy() df['totalMarketCap'] = df_raw['quote'].apply(lambda x: x[0]['totalMarketCap']) # 查看结果 print(df)
情况2:从JSON文件读取数据
如果数据存储在本地JSON文件(如market_data.json),先读取再处理:
import pandas as pd # 读取JSON文件 df_raw = pd.read_json('market_data.json') # 提取目标字段 df = df_raw[['timestamp']].copy() df['totalMarketCap'] = df_raw['quote'].apply(lambda x: x[0]['totalMarketCap']) print(df)
拓展:处理多币种quote的情况
如果quote列表包含多个币种(如USD、EUR),需要筛选指定币种的totalMarketCap,可以修改代码:
df['totalMarketCap'] = df_raw['quote'].apply( lambda x: next(item['totalMarketCap'] for item in x if item['name'] == 'USD') )
内容的提问来源于stack exchange,提问作者CG7
相关产品推荐
相关产品推荐

