当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Pandas to_timedelta方法用法及代码示例


Pandas to_timedelta(~) 方法将给定参数转换为 timedelta。 Timedeltas 是用于执行日期算术的时间单位(例如 1 小时 40 毫秒)。

参数

1.arg | stringtimedeltaarray-like

要转换为时间增量的数据。

2. unit | string | optional

提供的 arg 的单位。直接取自官方文档的可能值如下:

'Y', 'M', 'W', 'D', 'days', 'day', 'hours', 'hour', 'hr', 'h',
'm', 'minute', 'min', 'minutes', 'T', 'S', 'seconds', 'sec', 'second',
'ms', 'milliseconds', 'millisecond', 'milli', 'millis', 'L',
'us', 'microseconds', 'microsecond', 'micro', 'micros', 'U',
'ns', 'nanoseconds', 'nano', 'nanos', 'nanosecond', 'N'

默认情况下,unit="ns"(纳秒)。

3. errors | string | optional

arg无法转换为时间增量时如何处理:

说明

"raise"

如果无法解析 arg ,则会引发错误。

"ignore"

如果无法解析,则返回arg本身。

"coerce"

如果无法解析 arg ,则返回 NaT (not-a-time) 。

默认情况下,errors="raise"

返回值

如果提供单个数据单元,则返回timedelta64。否则,返回 timedelta64 的 NumPy 数组。

例子

来自字符串

要将字符串转换为时间增量:

pd.to_timedelta("2 days 03:04:05")



Timedelta('2 days 03:04:05')

从一组数字

要将数字数组转换为 timedelta 数组:

pd.to_timedelta([20,15], unit="hours")



TimedeltaIndex(['20:00:00', '15:00:00'], dtype='timedelta64[ns]', freq=None)
注意

小数点也将被考虑在内。例如,考虑以下情况:

pd.to_timedelta([2.5], unit="D")



TimedeltaIndex(['2 days 12:00:00'], dtype='timedelta64[ns]', freq=None)

我们看到2.5 天被解释为2 天和12 小时。

处理错误

增加

默认情况下,errors="raise" - 如果任何转换不成功,则会引发错误。例如,假设我们有一些无意义的数据,如下所示:

pd.to_timedelta([20,[]], unit="hours")   # errors="raise"



ValueError: Invalid type for timedelta scalar: <class 'list'>
忽视

每当从特定值的转换不成功时,我们可以使该方法返回该值而不是抛出错误。这是通过设置 unit="ignore" 来完成的:

pd.to_timedelta([20,[]], unit="hours", errors="ignore")



array([20, list([])], dtype=object)
强制

对于不成功的转换,我们可以让该方法返回 NaT (not-a-time):

pd.to_timedelta([20,[]], unit="hours", errors="coerce")



TimedeltaIndex(['20:00:00', NaT], dtype='timedelta64[ns]', freq=None)

timedelta 的实际使用

Timedelta 主要用于执行日期运算。例如,您可以对 DatetimeIndex 中的日期应用 2 天的偏移量,如下所示:

idx = pd.DatetimeIndex(["2020-12-25","2020-12-26"])
idx + pd.to_timedelta("2D")



DatetimeIndex(['2020-12-27', '2020-12-28'], dtype='datetime64[ns]', freq=None)

我们还可以将 Timedelta 添加到日期列中。例如,考虑以下情况:

df = pd.DataFrame({"A": pd.date_range("2020-12-25", "2020-12-26")})
df



   A
0  2020-12-25
1  2020-12-26

让我们在这些日期中添加几天:

df["B"] = df["A"] + pd.to_timedelta([3.5, 4], unit="D")
df



   A           B
0  2020-12-25  2020-12-28 12:00:00
1  2020-12-26  2020-12-30 00:00:00

在这里,生成的列 B 也是 datetime

df.dtypes



A    datetime64[ns]
B    datetime64[ns]
dtype: object

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 Pandas | to_timedelta method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。