Python Timedelta64将几天转换成几个月

时间:2018-08-19 13:16:40

标签: python timedelta python-datetime

我有一个Pandas数据框,其中有2列,分别代表开始时间戳和结束时间戳:

start       end
2016-06-13  2016-07-20

这些列的数据类型为datetime64[ns]

我现在想创建一个新列以显示月份差异:

start       end         duration
2016-06-13  2016-07-20  1.1

我尝试做以下事情:

df['duration'] = df['end'] - df['start']

结果如下:

start       end         duration
2016-06-13  2016-07-20  37 days 00:00:00.000000000

然后我尝试执行以下操作:

df['duration'] = df['end'] - df['start']).dt.months

但这会产生以下错误

  

AttributeError:“ TimedeltaProperties”对象没有属性“ months”

duration列的数据类型为timedelta64[ns]

我如何达到预期的效果?

2 个答案:

答案 0 :(得分:1)

import numpy as np #version: 1.16.2
import pandas as pd #version: 0.25.1

df['duration'] = (df['end'] - df['start'])/np.timedelta64(1, 'M')

答案 1 :(得分:0)

之前的代码在 numpy 的最新版本中不再有效。

TypeError:无法获得 NumPy 日期时间元数据 [D] 和 [M] 的公共元数据除数,因为它们具有不兼容的非线性基本时间单位
import numpy as np #version: 1.18.5
import pandas as pd #version: 1.1.5
df['duration'] = (df['end'] - df['start']).astype('timedelta64[M]')/np.timedelta64(1, 'M')
相关问题