pd.Timedelta.components
- это NamedTuple-like
. Создайте форматную строку и передайте Компоненты как диктовку.
>>> t
Timedelta('0 days 14:00:00.001747')
>>> fmt = '{days:} days {hours:02}:{minutes:02}:{seconds:02}.{milliseconds:03}{microseconds:03}{nanoseconds:03}'
>>> fmt.format(**t.components._asdict())
'0 days 14:00:00.001747113'
>>>
Или, как вы можете видеть в source , метод _repr_base
имеет параметр формата, который вы можете использовать.
>>> t._repr_base('all')
'0 days 14:00:00.001747113'
Вы также можете создать подкласс Pandas.Timedelta и переопределить метод ` str .
class MyTD(pd.Timedelta):
def __str__(self):
return self._repr_base(format='all')
>>> t = MyTD(50400001747113)
>>> print(t)
0 days 14:00:00.001747113
Учитывая, что один префикс подчеркивания для _repr_base
может указывать на то, что это деталь реализации, которая может измениться и только pd.Timedelta.components
NamedTuple
-подобна (что бы это ни значило - гарантирует ли этоинтерфейс NamedTuple?) вы можете быть в безопасности и извлечь значения из .components
и передать их в строку формата.
import operator
>>> components = operator.attrgetter('days','hours','minutes','seconds','milliseconds','microseconds','nanoseconds')
>>> fmt = '{} days {:02}:{:02}:{:02}.{:03}{:03}{:03}'
>>>
>>> t
Timedelta('0 days 14:00:00.001747')
>>> print(fmt.format(*components(t.components)))
0 days 14:00:00.001747113
>>>
Это может быть параноиком, но я не смог найти никакой информации по этим строкам,Может быть, кто-то вмешается.