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

如何在Julia DataFrame中选择多个DateTime范围?现有代码报ArgError

解决DataFrame多DateTime范围选择的报错问题

问题根源

你用map生成的dt_ranges是多个布尔数组组成的列表,比如两个时间范围就会得到两个和DataFrame行数一致的布尔数组。但DataFrame的行索引只接受单个一维布尔数组,直接传入列表自然会触发ArgError。

修正后的代码

ranges = [(start=DateTime(0), stop=DateTime(10)), (start=DateTime(50), stop=DateTime(70))]

# 生成每个时间范围的布尔掩码,再合并成单个掩码(符合任意一个范围就选中该行)
dt_mask = reduce(|, map(oh -> (df.datetime .>= oh.start) .& (df.datetime .<= oh.stop), ranges))

# 用合并后的掩码筛选目标行和列j
df[dt_mask, j]

额外说明

  • reduce(|, ...)的作用是把多个布尔数组按元素做逻辑或运算,只要某一行落在任意一个时间范围内,就会被标记为true
  • 如果有特殊需求要同时满足所有时间范围(这种场景很少见),可以把|换成&

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:00