为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 将日历映射到索引

Pandas 将日历映射到索引

白猪掌柜的 2024-01-16 15:17:57
我有一个全年每小时系列,我们可以称之为“日历”:from pandas import date_range, Seriescalendar = Series(    index=date_range("2006-01-01", "2007-01-01", freq="H", closed="left", tz="utc"),    data=range(365 * 24))现在我有一个新索引,它是另一个每小时序列,但在任意日期时间开始和结束:index = date_range("2019-01-01", "2020-10-02", freq="H", tz="utc")我想创建一个result具有相同索引的新系列index,并且对于每个月-日-小时组合,它从calendar.我可以迭代得到一个像这样的工作解决方案,只是try-except忽略 2 月 29 日:result = Series(index=index, dtype="float")for timestamp in result.index:    try:        calendar_timestamp = timestamp.replace(year=2006)    except:        continue    result.loc[timestamp] = calendar.loc[calendar_timestamp]然而,这是非常低效的,所以有人知道如何做得更好吗?更好是指特别快(CPU 时间方面)。限制/注释:没有 Numba,也没有 Cython,只有 CPython 和 Pandas/NumPy可以将 2 月 29 日保留为 NaN 值,因为日历中没有表示这一天我们总是可以假设索引已正确排序并且没有间隙(这同样适用于日历)
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

让我们尝试将组合提取为字符串和映射:

cal1 = pd.Series(calendar.values,
                 index=calendar.index.strftime('%m%d%H'))

result = index.to_series().dt.strftime('%m%d%H').map(cal1)

输出:

https://img1.sycdn.imooc.com/65a62dd80001b90e03870258.jpg

查看完整回答
反对 回复 2024-01-16
  • 1 回答
  • 0 关注
  • 31 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信