如何从嵌套字典创建DataFrame并映射对应数值?
问题描述
我尝试从嵌套字典创建DataFrame,字典结构如下:
{'2022-10-11T14:00:00Z': { 'INMET_CURITIBA_A807_M': { 'PRESS_HPA': [{'value': '915.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_HPA'}], 'PRESS_MX_HPA': [{'value': '82', 'quality': 'qf-UNCHECKED', 'quality_flag': 'UNCHECKED', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_MX_HPA'}] } }}
期望生成的DataFrame格式如下:
PRESS_HPA PRESS_MX_HPA 2022-10-11T14:00:00Z 915.0 82.0
注:实际包含更多日期,此处未全部展示。
解决方案
通过遍历嵌套字典提取关键数值,再构造符合要求的DataFrame,具体实现如下:
import pandas as pd # 示例嵌套字典(实际可替换为你的完整数据) raw_data = {'2022-10-11T14:00:00Z': { 'INMET_CURITIBA_A807_M': { 'PRESS_HPA': [{'value': '915.0', 'quality': 'qf-GOOD', 'quality_flag': 'GOOD', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_HPA'}], 'PRESS_MX_HPA': [{'value': '82', 'quality': 'qf-UNCHECKED', 'quality_flag': 'UNCHECKED', 'structure': 'INMET_CURITIBA_A807_M', 'element': 'PRESS_MX_HPA'}] } }} # 整理数据:提取日期、指标对应的数值 processed = {} for date, site_info in raw_data.items(): # 提取站点下的所有指标数据(示例中每个日期仅一个站点) metrics = next(iter(site_info.values())) row = {} for metric_name, entries in metrics.items(): # 取出第一个条目里的value并转为数值类型 row[metric_name] = float(entries[0]['value']) processed[date] = row # 生成DataFrame result_df = pd.DataFrame.from_dict(processed, orient='index') print(result_df)
如果实际数据中每个日期对应多个站点,可修改遍历逻辑,比如指定目标站点名称,或对多站点数据做合并处理。
内容的提问来源于stack exchange,提问作者Lucas Medeiros
相关产品推荐
相关产品推荐

