首页 > 解决方案 > 熊猫系列对象不更新值

问题描述

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

(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.])

该函数基本上将其作为输入的数组移动。我的问题是为什么熊猫系列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 并移动系列值。为什么我不能这样做?

标签: pythonpandasdataframeshift

解决方案


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

您可以尝试以下代码:

data1 = data1.shift(-1)

此代码将所有列移动 1

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

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

推荐阅读