Pandas重采样:如何从TimeDelta

时间:2017-09-26 14:52:39

标签: python pandas

有没有办法从TimeDelta或代表时间的其他对象开始生成DataFrame.resample接受的偏移规则字符串(例如'T','3W','2D',etc)频率?

我知道DataFrame.resample可以接受TimeDelta,但我想知道如何以编程方式生成字符串而无需创建自己的函数。

td = pd.TimeDelta('3min')
str(td)

输出

'0 days 00:03:00'

实际上我想获得一个偏移规则字符串:例如'3T'

2 个答案:

答案 0 :(得分:1)

docs解释str(t)

  

以[D day [s],] [H] H:MM:SS [.UUUUUU]的形式返回一个字符串,其中D为负t的负数。

你想知道timedelta是否支持输出,如'3W'而没有用户功能(通常)将其数字输出格式化为这种格式。不,它不提供这样的支持。

编写此类函数时,您可能会发现to_perioddelta()很有用。

答案 1 :(得分:0)

如果其他人需要像我一样编写自己的函数,这里是代码:

def timedelta_to_string(timedelta):
    """
    Converts a pandas.Timedelta to a string rappresentation
    compatible with pandas.Timedelta constructor format
    """
    c = timedelta.components
    format = ''
    if c.days != 0:
        format += '%dD' % c.days
    if c.hours > 0:
        format += '%dh' % c.hours
    if c.minutes > 0:
        format += '%dm' % c.minutes
    if c.seconds > 0:
        format += '%ds' % c.seconds
    if c.milliseconds > 0:
        format += '%dms' % c.milliseconds
    if c.microseconds > 0:
        format += '%dus' % c.microseconds
    if c.nanoseconds > 0:
        format += '%dns' % c.nanoseconds
return format