python - 熊猫系列对象不更新值
问题描述
我得到了一个 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 并移动系列值。为什么我不能这样做?
解决方案
shift()
通常在 pandas DataFrame 中有一个构建函数:
您可以尝试以下代码:
data1 = data1.shift(-1)
此代码将所有列移动 1
如果您只想移动一列,则应使用值命名该列并调用以下代码
data1[columns_name] = data1[columns_name].shift(-1)
推荐阅读
- logstash - 使用 Logstash 如何在 Oracle 数据库中推送 ElasticSearch 数据
- python - anaconda-navigator 没有通过初始化屏幕(也没有给出任何错误)(Win10)
- mysql - 创建 DSN 名称后无法使用 Visual Studio 连接到 MySQL
- jmeter - jmeter中可变长度的任何限制
- typescript - 如何动态访问输入错误
- alpine.js - Alpine.js 动态添加字段——奇怪的行为
- regex - 创建一个命令以显示当前目录中常规文件的扩展名以及每个扩展名的计数。没有扩展名的文件应该被忽略
- html - 如何自动添加分隔符(逗号)实时计算公式
- r - R:如果编织成 HTML,可能只运行一个 plotly 块,如果编织成 PDF 或 DOCX,只运行一个 ggplot2 块?
- sql - SQL 查询结构