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

如何用Python将API获取的str与float数据合并为DataFrame并导出至谷歌表格

Python API数据处理与DataFrame构建方案

一、优化单次JSON请求提取所有数据

你目前每次提取字段都重复调用response.json(),这会重复解析JSON数据,既低效又冗余。正确的做法是一次性解析JSON并提取data层数据,再从该数据中获取所有字段:

import datetime
import pandas as pd
import requests  # 假设使用requests库发起API请求

# 发起API请求并一次性解析核心数据
response = requests.get("你的智能设备API接口地址")
api_data = response.json()['data']  # 仅解析一次JSON,提取data层级的所有数据

# 从已解析的api_data中提取各字段
t1me = datetime.datetime.fromtimestamp(api_data['time']).strftime("%Y-%m-%d %H:%M:%S")
co2 = float(api_data['co2'])
humidity = float(api_data['humidity'])
pressure = float(api_data['pressure'])
temp = float(api_data['temp'])
voc = float(api_data['voc'])

这样既减少了重复解析的性能损耗,也让代码更简洁易维护。

二、构建目标结构的DataFrame

有两种简洁的方式生成你需要的DataFrame结构:

方法1:字典映射法(推荐)

直接构造与目标列名对应的字典,值为列表形式(支持后续追加多行数据):

# 构造匹配目标列名的数据字典
record_dict = {
    "Datetime": [t1me],
    "Temp": [temp],
    "Humidity": [humidity],
    "Pressure": [pressure],
    "CO2": [co2],
    "VOC": [voc]
}

# 生成DataFrame
df = pd.DataFrame(record_dict)

方法2:行数据列表法

构造单行数据列表,同时指定列名:

# 构造单行数据,顺序与目标列名对应
row_data = [[t1me, temp, humidity, pressure, co2, voc]]

# 指定列名生成DataFrame
df = pd.DataFrame(row_data, columns=["Datetime", "Temp", "Humidity", "Pressure", "CO2", "VOC"])

执行后,df的结构完全符合你的需求:

DatetimeTempHumidityPressureCO2VOC
2023-06-23 13:50:1418.955.01003.3768.046.0

补充:定时调用的实现

如果要实现每5分钟执行一次API请求与数据存储,可以在循环中加入休眠逻辑:

import time

while True:
    # 这里放入上述API请求、DataFrame构建、导出到谷歌表格的代码
    time.sleep(300)  # 休眠300秒(5分钟)

也可以使用schedule库实现更灵活的定时调度(需先安装pip install schedule)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:47:33