我现在正在使用pandas获取累积和列。但是,只有当其他列的值大于其他列的值时,此列才包含累积和。以下是我当前数据的一个示例:
Index A B C
0 1 20 3
1 10 15 11
2 20 12 25
3 30 18 32
4 40 32 17
5 50 12 4
然后我想cumsum()
列A如果列B大于C,如果非值为零。原始df
中的结果列D应如下所示:
Index A B C D
0 1 20 3 1
1 10 15 11 11
2 20 12 25 0
3 30 18 32 0
4 40 32 17 40
5 50 12 4 90
我感谢您的支持
虽然这有点野蛮,但您可以转换为numpy数组,然后编写一个简单的catch来遍历3个数组并比较值
可能还有更为持久的解决方案,但这也行得通
我们首先创建两个伪列-x和x_shift
df.x是有条件的,我们保留df.A的值,其中df.B>;df.C
df.x_shift是将值移到下面一行,并用0填充na
在最后一步中,我们有条件地添加df.A和df.x_移位,然后删除df.x和df.x_移位
为您的条件创建一个布尔序列,并标识连续的真或假组
按组分组;将每组的总和乘以条件;将结果分配给新的df列
您也可以跳过for循环:
识别SO Q&;中连续出现的值;A:Grouping dataframe based on consecutive occurrence of values
相关问题 更多 >
编程相关推荐