Dataframe已按日期排序,
col1==1值是唯一的,
只有0有重复项。
我有一个数据框,看起来像这样叫它df
+--------+----+----+
date |col1|col2|
+--------+----+----+
2020-08-01| 5| -1|
2020-08-02| 4| -1|
2020-08-03| 3| 3|
2020-08-04| 2| 2|
2020-08-05| 1| 4|
2020-08-06| 0| 1|
2020-08-07| 0| 2|
2020-08-08| 0| 3|
2020-08-09| 0| -1|
+--------+----+----+
条件是当col1==1时,我们从col2==4开始向后加(例如4,5,6,7,8,…),后面的col2==4一直返回0(例如4,0,0,0…)
所以,我的头发看起来像这样。
+--------+----+----+----+
date |col1|col2|want
+--------+----+----+----+
2020-08-01| 5| -1| 8 |
2020-08-02| 4| -1| 7 |
2020-08-03| 3| 3| 6 |
2020-08-04| 2| 2| 5 |
2020-08-05| 1| 4| 4 |
2020-08-06| 0| 1| 0 |
2020-08-07| 0| 2| 0 |
2020-08-08| 0| 3| 0 |
2020-08-09| 0| -1| 0 |
+---------+----+----+----+
增强:我想添加一个附加条件,当col1==1行时col2==-1,并且-1是连续的,然后我想计算连续的-1,然后用下一个col2==?价值观。下面是一个例子。
+--------+----+----+----+
date |col1|col2|want
+--------+----+----+----+
2020-08-01| 5| -1| 11|
2020-08-02| 4| -1| 10|
2020-08-03| 3| 3| 9 |
2020-08-04| 2| 2| 8 |
2020-08-05| 1| -1| 7 |
2020-08-06| 0| -1| 0 |
2020-08-07| 0| -1| 0 |
2020-08-08| 0| 4| 0 |
2020-08-09| 0| -1| 0 |
+---------+----+----+----+
所以,我们看到3个连续的-1,(我们只关心第一个连续的-1),在连续的4之后,我们将在col1==1行得到4+3=7。有可能吗?
1条答案
按热度按时间3zwjbxry1#
以下是我的尝试: