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

如何将嵌套Python字典格式的天气数据转换为Pandas DataFrame

嵌套天气字典转Pandas DataFrame实现方案

问题背景

现有如下嵌套格式的天气数据字典,需转换为指定结构的Pandas DataFrame,后续用于加载至SQLServer:

my_dict = {
'data.outdoor.temperature': {'unit': '℃', 'list': 
{'datetime.datetime(2025, 4, 23, 10, 0): 22.3', 
'datetime.datetime(2025, 4, 23, 14, 0): 21.3', 
'datetime.datetime(2025, 4, 23, 18, 0): 18.2', }}, 
'data.indoor.temperature': {'unit': '℃', 'list': 
{'datetime.datetime(2025, 4, 23, 10, 0): 23.2', 
'datetime.datetime(2025, 4, 23, 14, 0): 23.5', 
'datetime.datetime(2025, 4, 23, 18, 0): 22.9'}}}

期望输出的DataFrame结构(列依次为:传感器类型、日期、小时、温度、单位):

outdoor.temperature | 2025_04_23 | 10 | 22.3 | ℃  
outdoor.temperature | 2025_04_23 | 14 | 21.3 | ℃  
outdoor.temperature | 2025_04_23 | 18 | 18.2 | ℃  
indoor.temperature | 2025_04_23 | 10 | 23.2 | ℃  
indoor.temperature | 2025_04_23 | 14 | 23.5 | ℃  
indoor.temperature | 2025_04_23 | 18 | 22.9 | ℃  

解决思路

原字典核心问题是list字段下的条目为字符串形式的键值对,而非原生字典,需先解析这些字符串,提取datetime信息和温度值,再整理成DataFrame所需的行数据结构。

实现代码

import pandas as pd
import datetime

# 初始化存储所有行数据的列表
rows = []

# 遍历字典中的每个传感器条目
for sensor_full_key, sensor_data in my_dict.items():
    # 提取传感器名称(去掉前缀data.)
    sensor_name = sensor_full_key.replace('data.', '')
    unit = sensor_data['unit']
    
    # 处理每个数据条目字符串
    for entry_str in sensor_data['list']:
        # 拆分datetime字符串和温度值
        dt_str, temp_str = entry_str.split(': ', 1)
        # 解析datetime对象:去掉datetime.datetime(...)的包裹,提取参数
        dt_args = eval(dt_str.replace('datetime.datetime(', '').rstrip(')'))
        dt = datetime.datetime(*dt_args)
        
        # 格式化日期和小时
        date_str = dt.strftime('%Y_%m_%d')
        hour = dt.hour
        temperature = float(temp_str)
        
        # 添加到行列表
        rows.append([sensor_name, date_str, hour, temperature, unit])

# 转换为DataFrame
df = pd.DataFrame(rows, columns=['sensor', 'date', 'hour', 'temperature', 'unit'])

# 查看结果
print(df)

输出结果

运行代码后得到的DataFrame如下:

sensor        date  hour  temperature unit
0  outdoor.temperature  2025_04_23    10         22.3    ℃
1  outdoor.temperature  2025_04_23    14         21.3    ℃
2  outdoor.temperature  2025_04_23    18         18.2    ℃
3   indoor.temperature  2025_04_23    10         23.2    ℃
4   indoor.temperature  2025_04_23    14         23.5    ℃
5   indoor.temperature  2025_04_23    18         22.9    ℃

注意事项

  • 数据量较大(数百条)时仍能高效处理,遍历和字符串解析的时间复杂度为O(n),n为总数据条目数
  • 若datetime字符串格式有变化,需调整解析逻辑,确保能正确提取年、月、日、小时参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:57:18