首页 > 解决方案 > 如何将 datetime 列移动 -1 并用前两个值之间的差异填充 NaT?

问题描述

我有一个df如下:

    start   values
0   2020-03-01 00:15:00 63.2
1   2020-03-01 00:30:00 61.0
2   2020-03-01 00:45:00 58.9
3   2020-03-01 01:00:00 57.0
4   2020-03-01 01:15:00 55.3
5   2020-03-01 01:30:00 53.7

我正在尝试创建一个名为的新列end,为此我做了:

df['end'] = df['start'].shift(-1)

给出以下输出

    start   values    end
0   2020-03-01 00:15:00 63.2 2020-03-01 00:30:00
1   2020-03-01 00:30:00 61.0 2020-03-01 00:45:00
2   2020-03-01 00:45:00 58.9 2020-03-01 01:00:00
3   2020-03-01 01:00:00 57.0 2020-03-01 01:15:00
4   2020-03-01 01:15:00 55.3 2020-03-01 01:30:00
5   2020-03-01 01:30:00 53.7 NaT

我试图NaT用前两个值之间的差异来填充,即NaT应该是

2020-03-01 01:45:00 (2020-03-01 01:30:00 + 15 mins (2020-03-01 01:30:00-2020-03-01 01:15:00))

我试过:

df['end'] = df['start'].shift(-1).diff().ffill()

但它给了我以下错误:

'TimedeltaProperties' 对象没有属性 'strftime'

我在做什么错?

标签: python-3.xpandas

解决方案


df["end"] = df.start.shift(-1).fillna(df.start + df.start.diff())

推荐阅读