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

如何用Python的Meteostat库抓取多地点天气数据及解决报错

解决Meteostat中AttributeError: 'Series' object has no attribute 'fetch'的问题

你的错误出在data = data.fetch()这一行——df.apply(...)返回的是一个Pandas Series,其中每个元素是Meteostat的Daily对象,而fetch()是Daily实例的方法,不能直接在Series对象上调用。

需要对每个Daily实例单独调用fetch(),再将所有地点的天气数据合并到一个DataFrame中。以下是两种可行的实现方式:

方法一:在apply中直接获取并处理数据

import pandas as pd
from datetime import datetime
from meteostat import Point, Daily

# 原始数据集
df = pd.DataFrame({
    'postal code': [11, 12, 13],
    'latitude': [40.7128, 34.0522, 51.5074],
    'longitude': [-74.0060, -118.2437, -0.1278]
})

# 设置时间范围
start = datetime(2022, 1, 1)
end = datetime(2022, 12, 31)

def fetch_location_data(row):
    # 创建地点Point
    point = Point(row['latitude'], row['longitude'], 70)
    # 获取该地点的每日天气数据
    daily_df = Daily(point, start, end).fetch()
    # 添加邮编列,标记数据所属地点
    daily_df['postal code'] = row['postal code']
    return daily_df

# 对每个地点应用函数,得到包含多个DataFrame的Series
location_dfs = df.apply(fetch_location_data, axis=1)

# 合并所有地点的数据
final_weather_data = pd.concat(location_dfs.to_list())

# 查看结果(仅展示关键列)
print(final_weather_data[['postal code', 'tmax', 'tmin']].head())

方法二:用循环遍历每个地点

如果你更习惯循环写法,也可以这样实现:

import pandas as pd
from datetime import datetime
from meteostat import Point, Daily

df = pd.DataFrame({
    'postal code': [11, 12, 13],
    'latitude': [40.7128, 34.0522, 51.5074],
    'longitude': [-74.0060, -118.2437, -0.1278]
})

start = datetime(2022, 1, 1)
end = datetime(2022, 12, 31)

final_weather_data = pd.DataFrame()

for _, row in df.iterrows():
    point = Point(row['latitude'], row['longitude'], 70)
    daily_df = Daily(point, start, end).fetch()
    daily_df['postal code'] = row['postal code']
    final_weather_data = pd.concat([final_weather_data, daily_df])

关键说明

  • 两种方法都会给每个地点的天气数据添加postal code列,方便后续区分不同地点的数据
  • tmax和tmin列分别对应每日最高气温和最低气温,符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:35:05