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)
我得到了一个 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)