我有一个 pandas DataFrame,其布尔列按另一列排序,需要计算布尔列的反向累积和,即从当前行到底部的真实值的数量。
例子
In [13]: df = pd.DataFrame({'A': [True] * 3 + [False] * 5, 'B': np.random.rand(8) })
In [15]: df = df.sort_values('B')
In [16]: df
Out[16]:
A B
6 False 0.037710
2 True 0.315414
4 False 0.332480
7 False 0.445505
3 False 0.580156
1 True 0.741551
5 False 0.796944
0 True 0.817563
我需要一些东西来给我一个新的值列
3
3
2
2
2
2
1
1
也就是说,对于每一行,它应该包含该行和下面几行的 True 值的数量。
我尝试了各种使用 .iloc[::-1]
的方法,但结果并不理想。
看起来我遗漏了一些明显的信息。我昨天才开始使用 Pandas。
原文由 wl2776 发布,翻译遵循 CC BY-SA 4.0 许可协议
反转 A 列,取 cumsum,然后再次反转:
产量
或者,您可以计算
True
列中A
的数量并减去(移位的)cumsum:但这要慢得多。使用 IPython 执行基准测试: