为了账号安全,请及时绑定邮箱和手机立即绑定

在 pandas 数据框中 - 返回满足条件的累积和的最后一个值

在 pandas 数据框中 - 返回满足条件的累积和的最后一个值

慕容森 2023-07-27 09:50:18
index [0, 1, 2, 3, 4, 5]part_1 [4, 5, 6, 4, 8, 4]part_2 [11, 12, 10, 12, 14, 13]new [6, 4, 8, 8, na, na]我是 python 和 pandas 的初学者,寻求支持。在一个简单的数据框中,我想创建一个新列,为我提供满足条件的累积总和的最后一行df.part_1.cumsum() > df.part_2例如,对于索引 0 处的新列,我将得到值 6,即 (4+5+6) > 11。谢谢!
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

IIUC 这里有一个NumPy基于方法。这个想法是构建一个上三角矩阵,每行中都有输入数组的移位版本。通过获取这些的累积和,并与数据帧的第二列进行比较,我们可以使用argmax第一个索引找到累积序列中的值大于相应索引中的第三数据帧列:


a = df.to_numpy()

cs = np.triu(a[:,1]).cumsum(1)

ix = (cs >= a[:,2,None]).argmax(1)

# array([2, 3, 3, 4, 6, 7, 7, 0], dtype=int64)

df['first_ix'] = a[ix,1,None]

print(df)

   index  part_1  part_2  first_ix

0      0       4      11         6

1      1       5      12         4

2      2       6      10         4

3      3       4      12         8

4      4       8      14         6

5      5       4      13         8

6      6       6      11         8

7      7       8      10         4


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信