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

如何在xarray数据集中筛选出每日12:00的时间数据?

问题描述

数据集说明

  • 所用ERA5数据集为netCDF格式,时间格式为%Y-%m-%dT%h:%M%s %p,按小时提供数据(31天共744个时间点)
  • 需求:提取每日12:00:00的数据,最终得到31个数据点,后续需复用该逻辑处理更长周期数据集
  • 已尝试方法:
    • df = df[df['time'].dt.hour == 12]
    • 使用ison函数
  • 遇到错误:TypeError: unhashable type: 'DataArray'

解决方案

方法1:xarray原生处理(推荐,适配netCDF数据)

若你的数据对象是xarray的Dataset/DataArray,直接用xarray的时间筛选方法:

# 筛选小时为12的数据
ds = ds.sel(time=ds.time.dt.hour == 12)

如需精准匹配时分秒:

# 筛选时间为12:00:00的记录
ds = ds.sel(time=ds.time.dt.strftime("%H:%M:%S") == "12:00:00")

方法2:转为pandas DataFrame处理

若习惯使用pandas,可先将xarray对象转成DataFrame再操作:

# 转换为DataFrame
df = ds.to_dataframe()
# 通过索引提取12点数据
df = df[df.index.get_level_values('time').hour == 12]
# 或重置索引后筛选
df = df.reset_index()
df = df[df['time'].dt.hour == 12]

错误原因

你遇到的TypeError是因为操作对象是xarray的DataArray,而非pandas的DataFrame。xarray不支持直接用[]加布尔数组的索引方式,需用sel或where方法实现筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:27:14