如何直接打印精确到纳秒的Timedelta呢?目前,我的解决方案是给Timedelta添加一些虚拟日期,希望有更好的解决方案。
import pandas as pd
time = pd.Timedelta(50400001747113)
print(time)
# 0 days 14:00:00.001747
print(pd.Timestamp('2019-10-02') + time)
# 2019-10-02 14:00:00.001747113
您可以看到,Timestamp最多打印到纳秒,而Timedelta仅打印到微秒。
非常感谢您的帮助!
4条答案
按热度按时间kwvwclae1#
pd.Timedelta.components
是NamedTuple-like
。创建一个格式字符串并将组件作为指令传递。或者,正如您在源代码中看到的,
_repr_base
方法有一个可以使用的format参数。您还可以子类化Pandas.Timedelta并重写'str方法。
假设
_repr_base
的单下划线前缀可能表示它是一个可以更改的实现细节,并且pd.Timedelta.components
只是NamedTuple
-like(无论这意味着什么-它是否保证NamedTuple接口?),您可以安全地从.components
中提取值并将其传递给格式字符串。这可能是偏执狂,但我找不到任何信息沿着这方面的线索。也许有人会插话。
q3aa05252#
也许纳秒只是没有打印出来,但它们就在那里:
图纸:
您可以通过属性轻松访问纳秒:
x33g5p2x3#
您可以通过named tuple like object访问所需的属性:
klsxnrf14#
如果您是panda1.5.0之前的版本,并且不介意这个版本被弃用,那么您可以访问td.delta来获取以纳秒https://pandas.pydata.org/docs/reference/api/pandas.Timedelta.delta.html为单位的时间