如果我有一个1或NaN的pandas.core.series.Series命名ts如下:
3382 NaN
3381 NaN
...
3369 NaN
3368 NaN
...
15 1
10 NaN
11 1
12 1
13 1
9 NaN
8 NaN
7 NaN
6 NaN
3 NaN
4 1
5 1
2 NaN
1 NaN
0 NaN
Run Code Online (Sandbox Code Playgroud)
我想计算这个系列的cumsum但它应该在NaN的位置重置(设置为零),如下所示:
3382 0
3381 0
...
3369 0
3368 0
...
15 1
10 0
11 1
12 2
13 3
9 0
8 0
7 0
6 0
3 0
4 1
5 2 …Run Code Online (Sandbox Code Playgroud) 我没有在其他地方找到答案,所以我需要问一下.可能是因为我不知道如何正确命名它.(英语不是我的原始语言)
我有大的日期时间数据框.时间在这里很重要.df中的一列具有值[Nan,1,-1].我需要执行快速计算,以便在值发生变化时进行累积和重置.
例.
Time sign desire_value
2014-01-24 05:00:00 Nan Nan
2014-01-24 06:00:00 Nan Nan
2014-01-24 07:00:00 Nan Nan
2014-01-24 08:00:00 1 1
2014-01-24 09:00:00 1 2
2014-01-24 10:00:00 1 3
2014-01-24 11:00:00 -1 1
2014-01-24 12:00:00 -1 2
2014-01-24 13:00:00 -1 3
2014-01-24 14:00:00 -1 4
2014-01-24 15:00:00 -1 5
2014-01-24 16:00:00 1 1
2014-01-24 17:00:00 1 2
2014-01-24 18:00:00 1 3
2014-01-24 19:00:00 -1 1
2014-01-24 20:00:00 -1 2
2014-01-24 21:00:00 1 1
2014-01-24 22:00:00 1 2
Run Code Online (Sandbox Code Playgroud)
我有使用函数的工作解决方案,但效率不高.
df['sign_1'] …Run Code Online (Sandbox Code Playgroud) 我有一个包含2列的数据框,这里的目标很简单; 如果行列设置为False,则重置df.cumsum();
DF
value condition
0 1 1
1 2 1
2 3 1
3 4 0
4 5 1
Run Code Online (Sandbox Code Playgroud)
想要的结果如下:
DF
value condition
0 1 1
1 3 1
2 6 1
3 4 0
4 9 1
Run Code Online (Sandbox Code Playgroud)
如果我循环数据帧,如本文所述Python pandas cumsum()重置后达到最大值 我可以实现想要的结果,但我正在寻找一个更加矢量化的方式使用pandas标准函数