有没有办法从TimeDelta或代表时间的其他对象开始生成DataFrame.resample接受的偏移规则字符串(例如'T','3W','2D',etc)频率?
我知道DataFrame.resample可以接受TimeDelta,但我想知道如何以编程方式生成字符串而无需创建自己的函数。
td = pd.TimeDelta('3min')
str(td)
输出
'0 days 00:03:00'
实际上我想获得一个偏移规则字符串:例如'3T'
答案 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