gpt4 book ai didi

python - 根据最后一个 LARGEST 值替换数据框中当前值的最快方法

转载 作者:行者123 更新时间:2023-12-04 00:00:00 27 4
gpt4 key购买 nike

假设我有一个看起来像这样的数据框

     A
0 17
1 21
2 18
3 11
4 4
5 27
6 21
7 11
8 7
9 4
10 7
11 4
12 3
13 27
14 27
15 11
16 11
17 25

我想用该行中最后一个 LARGEST 值替换下一行的值。所需的输出是这样的:

     A   B
0 17 17
1 21 21
2 18 0
3 11 0
4 4 0
5 27 27
6 21 0
7 11 0
8 7 0
9 4 0
10 7 0
11 4 0
12 3 0
13 27 27
14 27 27
15 11 0
16 11 0
17 25 0

目前我运行一个如下所示的 iterrows 函数:

df['B'] = df['A']

lastrow = -1
for i, row in df.iterrows():
if lastrow > row['B']:
row['B'] = 0
else:
lastrow = row['B']

但是速度很慢。有没有办法提高这个循环的速度?

我对它进行了计时,对于 100,000 行,这是输出:

CPU times: user 10.3 s, sys: 4.5 ms, total: 10.3 s
Wall time: 10.4 s

最佳答案

检查 cummax

df['B']=df.A.where(df.A.eq(df.A.cummax()),0)
df
Out[75]:
A B
0 17 17
1 21 21
2 18 0
3 11 0
4 4 0
5 27 27
6 21 0
7 11 0
8 7 0
9 4 0
10 7 0
11 4 0
12 3 0
13 27 27
14 27 27
15 11 0
16 11 0
17 25 0

关于python - 根据最后一个 LARGEST 值替换数据框中当前值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63362009/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com