Pandas 系列对象不更新值

Pandas Series object does not update values

我得到了一个 Pandas 系列对象,如下所示:

(Pdb) data1
date_time
2019-12-31 01:00:00+00:00    1.0
2019-12-31 02:00:00+00:00    1.0
2019-12-31 03:00:00+00:00    1.0
2019-12-31 04:00:00+00:00    1.0
2019-12-31 05:00:00+00:00    1.0
                              ...
2020-11-30 20:00:00+00:00    5.0
2020-11-30 21:00:00+00:00    20.0
2020-11-30 22:00:00+00:00    20.0
2020-11-30 23:00:00+00:00    20.0
2020-12-01 00:00:00+00:00    20.0
Name: ASD, Length: 8064, dtype: float64

对象的值:

(Pdb) data1.values
array([1., 1., 1., ..., 20., 20., 20.])

如果我 运行 data1.values 上的函数调用 shift()

(Pdb) shift(data1.values, -1)
array([1., 1., 1., ..., 20., 20., 0.])

该函数主要是将其作为输入给定的数组进行移位。 我的问题是为什么 pandas 系列 update() 功能没有按预期工作?

(Pdb) data1.update(shift(data1.values, -1))
(Pdb) data1
date_time
2019-12-31 01:00:00+00:00    1.0
2019-12-31 02:00:00+00:00    1.0
2019-12-31 03:00:00+00:00    1.0
2019-12-31 04:00:00+00:00    1.0
2019-12-31 05:00:00+00:00    1.0
                              ...
2020-11-30 20:00:00+00:00    20.0
2020-11-30 21:00:00+00:00    20.0
2020-11-30 22:00:00+00:00    20.0
2020-11-30 23:00:00+00:00    20.0
2020-12-01 00:00:00+00:00    20.0
Name: DEtoDK, Length: 8064, dtype: float64

实际上应该在末尾加一个0并移动系列值。为什么我做不到?

通常 pandas DataFrame 中有一个构建函数 shift():

您可以试试下面的代码:

data1 = data1.shift(-1)

此代码将所有列移动 1

如果您只想移动一列,您应该用值命名该列并调用以下代码

data1[columns_name] = data1[columns_name].shift(-1)