python - 将两个日期之间的差值转换为整数

标签 python pandas

我有一个日期框架(df),其头部看起来像:

        DATE  BBG  FLAG  DATE_DIFF
0 2014-03-04    A     0        NaT
1 2014-04-04    B     1    31 days
2 2014-04-07    C     0     3 days
3 2014-04-08    D     0     1 days
4 2014-04-09    E     0     1 days

DATE_DIFF 列是一行中的日期与上一行中的日期之间的差异。我使用以下内容来计算DATE_DIFF:

df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1))

我正在寻找一种将 DATE_DIFF 列转换为整数的方法,以便生成的数据帧如下所示:

        DATE  BBG  FLAG  DATE_DIFF
0 2014-03-04    A     0        NaN
1 2014-04-04    B     1         31 
2 2014-04-07    C     0          3 
3 2014-04-08    D     0          1 
4 2014-04-09    E     0          1 

我尝试过使用:

df['DATE_DIFF'] = (df['DATE']-df['DATE'].shift(1)).astype(int)

但这只是给了我错误:

TypeError: cannot astype a timedelta from [timedelta64[ns]] to [int32]

最佳答案

您可以做与当前正在做的完全相同的事情,只需添加dt.days

df['diff'] = (df['DATE']-df['DATE'].shift(1)).dt.days

    DATE    BBG FLAG    diff
0   2014-03-04  A   0   NaN
1   2014-04-04  B   1   31.0
2   2014-04-07  C   0   3.0
3   2014-04-08  D   0   1.0
4   2014-04-09  E   0   1.0

请注意,数据类型将是 float 而不是整数,因为第一行是 NaN

关于python - 将两个日期之间的差值转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53135789/

相关文章:

python - 从 CSV 导入格式错误转换日期时间

python - Pandas 自定义 aggfunc 返回字符串限制字符数

python - 使用 for 循环构建 NumPy 数组(列表的列表?)

python - 如何将 2 个参数传递给 def get_queryset?

python - 如何从redis中排队rq中的工作

python - 如何检查一个句子是否是一个带有空格的问题?

python - Excel 删除了 Pandas 设置的公式,但手动设置公式会使公式生效

python - 比较 PandaS DataFrame 并返回第一个缺少的行

Python:使用给定列绘制带有 x 轴的 Pandas 数据框的条形图

python - 没有唯一列的透视数据框