如何从 python 中的 timedelta64[ns] 对象中提取天数作为整数
how to extract days as integers from a timedelta64[ns] object in python
我有一个 pandas 数据框,其列如下:
In [96]: data['difference']
Out[96]:
0 NaT
1 1 days 21:34:30
2 0 days 16:57:36
3 0 days 00:16:51
4 0 days 15:52:38
5 0 days 14:19:34
6 0 days 02:54:46
7 1 days 04:21:28
8 0 days 01:58:55
9 0 days 10:30:35
10 0 days 07:53:04
....
Name: difference, dtype: timedelta64[ns]
我想在它旁边创建一列,其中的整数对应于该列中的天数。
根据 pandas 文档,您可以使用 timedelta64
对象的 astype
方法提取天数,结果类型为 float64
.
data['difference'].astype('timedelta64[D]')
您可以使用 dt.days
从系列中提取几天,
df.difference
Out[117]:
0 -1 days +00:00:05
1 NaT
2 -1 days +00:00:05
3 1 days 00:00:00
dtype: timedelta64[ns]
df.difference.dt.days
Out[118]:
0 -1
1 NaN
2 -1
3 1
dtype: float64
所有其他成分提取物,
dr
Out[93]:
0 -1 days +00:00:05
1 NaT
2 1 days 02:04:05
3 1 days 00:00:00
dtype: timedelta64[ns]
dr.dt.components
Out[95]:
days hours minutes seconds milliseconds microseconds nanoseconds
0 -1 0 0 5 0 0 0
1 NaN NaN NaN NaN NaN NaN NaN
2 1 2 4 5 0 0 0
3 1 0 0 0 0 0 0
这应该将您的 timedelta64[ns]
类型转换为 float64
表示天数:
data['difference'].astype('timedelta64[D]')
我有一个 pandas 数据框,其列如下:
In [96]: data['difference']
Out[96]:
0 NaT
1 1 days 21:34:30
2 0 days 16:57:36
3 0 days 00:16:51
4 0 days 15:52:38
5 0 days 14:19:34
6 0 days 02:54:46
7 1 days 04:21:28
8 0 days 01:58:55
9 0 days 10:30:35
10 0 days 07:53:04
....
Name: difference, dtype: timedelta64[ns]
我想在它旁边创建一列,其中的整数对应于该列中的天数。
根据 pandas 文档,您可以使用 timedelta64
对象的 astype
方法提取天数,结果类型为 float64
.
data['difference'].astype('timedelta64[D]')
您可以使用 dt.days
从系列中提取几天,
df.difference
Out[117]:
0 -1 days +00:00:05
1 NaT
2 -1 days +00:00:05
3 1 days 00:00:00
dtype: timedelta64[ns]
df.difference.dt.days
Out[118]:
0 -1
1 NaN
2 -1
3 1
dtype: float64
所有其他成分提取物,
dr
Out[93]:
0 -1 days +00:00:05
1 NaT
2 1 days 02:04:05
3 1 days 00:00:00
dtype: timedelta64[ns]
dr.dt.components
Out[95]:
days hours minutes seconds milliseconds microseconds nanoseconds
0 -1 0 0 5 0 0 0
1 NaN NaN NaN NaN NaN NaN NaN
2 1 2 4 5 0 0 0
3 1 0 0 0 0 0 0
这应该将您的 timedelta64[ns]
类型转换为 float64
表示天数:
data['difference'].astype('timedelta64[D]')