【发布时间】:2019-12-11 17:47:11
【问题描述】:
我有一个类似于下面的 DataFrame。我正在尝试计算它从 False 切换到 True 的次数的滚动计数。
Time True/False
1 0
2 1
3 1
4 0
5 0
6 0
7 1
8 1
9 0
10 1
11 0
下面的代码是我使用 ``numpy.where 得出的,但我没有得到我想要的结果。
Test['RollingCount'] = np.where(Test['True/False'] == 0, Test['RollingCount'].shift(1),
np.where((Test['True/False'] == 1) & (Test['True/False'].shift(1) == 1), Test['RollingCount'].shift(1),
np.where((Test['True/False'] == 1) & (Test['True/False'].shift(1) == 0), (Test['RollingCount'].shift(1) + 1),
np.where(Test['True/False'] == 1, 1, 0))))
下面是我想要完成的输出。知道我做错了什么吗?有没有更好的方法来解决这个问题?
Time True/False RollingCount
1 0 0
2 1 1
3 1 1
4 0 1
5 0 1
6 0 1
7 1 2
8 1 2
9 0 2
10 1 3
11 0 3
【问题讨论】:
标签: python-3.x numpy dataframe if-statement lambda