gpt4 book ai didi

python - 如何构造带 DateOffset 的 TimeGrouper?

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:00 29 4
gpt4 key购买 nike

我正在尝试以编程方式构建一个 pandas TimeGrouper。快速查看代码会发现 TimeGrouper__init__ 方法的 freq 参数被转换为 DateOffset 通过 to_offset() 函数。此外,to_offset() 检查其参数是否是 DateOffset 的实例,如果为真,则返回它。

所以,这段代码应该可以工作:

import pandas as pd
period = 'minute'
value = 10
time_grouper = pd.TimeGrouper(pd.DateOffset(**{period:value}))

但是,我得到以下异常:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\tseries\resample.py", line 45, in __init__
rule = self.freq.rule_code
File "C:\Python27\lib\site-packages\pandas\tseries\offsets.py", line 217, in rule_code
raise NotImplementedError
NotImplementedError

我使用的是 0.12.0 版 pandas。

我缺少什么来获取 DateOffsetTimeGrouper 的工作实例?

最佳答案

您不需要显式构造偏移量(尽管您可以根据需要构造),只需传递 '10T' 就足够了(这就是 to_offset 所做的,将其转换为偏移对象)。此外,您很少需要显式构造一个 TimeGrouper(在 0.14.0 中,发布 shorty),您根本不需要。你通常只是重新取样``

In [5]: pd.offsets.Minute('10')
Out[5]: <10 * Minutes>

In [6]: pd.TimeGrouper(freq='10T')
Out[6]: <pandas.tseries.resample.TimeGrouper at 0x3faab90>

In [7]: pd.TimeGrouper(freq='10T').freq
Out[7]: <10 * Minutes>

In [8]: pd.TimeGrouper(freq=pd.offsets.Minute('10')).freq
Out[8]: <10 * Minutes>

你也可以这样做:

In [1]: values = { 'minute' : 10, 'hour' : 5 }

In [3]: [ getattr(pd.offsets,k.capitalize())(v) for k,v in values.items() ]
Out[3]: [<5 * Hours>, <10 * Minutes>]

或者这个(通过指定一个元组)

In [3]: pd.TimeGrouper(freq=(5,'Min')).freq
Out[3]: <5 * Minutes>

In [4]: pd.TimeGrouper(freq=(10,'H')).freq
Out[4]: <10 * Hours>

关于python - 如何构造带 DateOffset 的 TimeGrouper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757344/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com