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

如何基于DataFrame中的位置与时间批量获取温度数据?

解决批量获取Meteostat温度的问题

首先,你直接用DataFrame列创建Point对象的写法行不通,因为Point类需要单个数值(不是整个Series)来初始化位置信息。Meteostat目前没有原生支持批量处理多位置多时间点的API,所以得逐行处理每条记录。

具体实现步骤:

  1. 转换时间格式:确保start列是datetime类型,Meteostat的Hourly类需要这个类型的参数:
import pandas as pd
from meteostat import Point, Hourly

# 读取数据并转换时间列
geo_time = pd.read_csv(r'geo_time.csv')
geo_time['start'] = pd.to_datetime(geo_time['start'])
  1. 定义单条记录温度获取函数:写一个函数,接收DataFrame单行数据,创建对应位置的Point,获取指定时间的温度,同时处理无数据的情况:
def get_temp(row):
    # 创建位置对象
    location = Point(row['latitude'], row['longitude'], row['altitude'])
    # 获取指定时刻的小时数据
    hourly_data = Hourly(location, row['start'], row['start']).fetch()
    # 返回温度,无数据则返回空值
    return hourly_data['temp'].iloc[0] if not hourly_data.empty else pd.NA
  1. 批量生成温度列:用apply方法逐行调用函数,将结果添加到原DataFrame:
# 添加温度列
geo_time['temp'] = geo_time.apply(get_temp, axis=1)

注意事项:

  • API调用限制:Meteostat免费API有调用频率限制,批量处理大量数据时,建议在get_temp函数中加入time.sleep(1)这类延迟逻辑,避免被限流。
  • 数据缺失处理:部分位置或时间可能没有可用气象数据,函数中已返回pd.NA,你可以根据需求用填充、删除等方式进一步处理缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:15:59