Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 是否有一个Python函数用于+;如果与前一行相同以保持序列递增,则将1转换为列中的值?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 是否有一个Python函数用于+;如果与前一行相同以保持序列递增,则将1转换为列中的值?

Python 3.x 是否有一个Python函数用于+;如果与前一行相同以保持序列递增,则将1转换为列中的值?,python-3.x,pandas,Python 3.x,Pandas,我有一些时间序列数据,如果有相同的值,我想修改它们 给我: |period |period_secs| | 1 | 2 | | 1 | 3 | | 1 | 3 | | 1 | 3 | | 1 | 4 | | 1 | 8 | 我想添加一个新的列来继续这个序列,这样就不会有重复的数字,并且总是在增加。 这会给我 |perio

我有一些时间序列数据,如果有相同的值,我想修改它们

给我:

|period   |period_secs|
|    1    |     2     |
|    1    |     3     |
|    1    |     3     |
|    1    |     3     |
|    1    |     4     |
|    1    |     8     |
我想添加一个新的列来继续这个序列,这样就不会有重复的数字,并且总是在增加。 这会给我

|period   |period_secs|period_secs_new|
|    1    |     2     |       2       |
|    1    |     3     |       3       |
|    1    |     3     |       4       |
|    1    |     3     |       5       |
|    1    |     4     |       6       |
|    1    |     8     |       8       |
如果您有任何帮助,我们将不胜感激。

这是一个使用和同时使用新的解决方案(在3.8中):

输出:

  period  period_secs  period_secs_new
0      1            2                2
1      1            3                3
2      1            3                4
3      1            3                5
4      1            4                6
5      1            8                8
  period  period_secs  period_secs_new
0      1            1                1
1      1            2                2
2      1            3                3
3      1            3                4
4      1            3                5
5      1            6                6
6      1            8                8

一种具有累积功能的解决方案:

从itertools导入累积
定义索引计数(总和、新值):
如果新值>求和,则返回新值。否则求和+1
df['period\u secs\u new']=列表(累计(df['period\u secs'],func=索引计数))
输出:

  period  period_secs  period_secs_new
0      1            2                2
1      1            3                3
2      1            3                4
3      1            3                5
4      1            4                6
5      1            8                8
  period  period_secs  period_secs_new
0      1            1                1
1      1            2                2
2      1            3                3
3      1            3                4
4      1            3                5
5      1            6                6
6      1            8                8

因为这是时间序列数据。我不能有一个时间发生超过一次,因为我必须将它与另一个df合并。