gpt4 book ai didi

Python Pandas 逐行条件计算

转载 作者:行者123 更新时间:2023-12-03 23:49:03 31 4
gpt4 key购买 nike

我有一个数据集,其中 A 列中的值表示分数。
我想计算一个 B 列,在那里我可以看到分数等于或高于最后一行的时间。
如果该值较低,那么我会将 B 列中该行的值设置为 0。

我尝试了以下方法:

df = pd.DataFrame({'A': [140, 145,148, 150, 100, 105, 106]})

df['B'] = 0
df.loc[df['A'].diff() >= 0, 'B'] = df['B'].shift() + 1

结果如下
    A       B
0 140 0.0
1 145 1.0
2 148 1.0
3 150 1.0
4 100 0.0
5 105 1.0
6 106 1.0

所以我知道对每一行检查条件 - 但不幸的是它似乎是一起计算的,所以它不会按预期增加值 B 因为在计算每一行时,第 1 行 .shift() 的值是还是0。

我该怎么做才能得到以下结果?:
    A       B
0 140 0
1 145 1
2 148 2
3 150 3
4 100 0
5 105 1
6 106 2

最佳答案

您需要 cumsum识别块,和groupby().cumcount()枚举每个块:

s = df['A'].diff().ge(0)
df['B'] = s.groupby((~s).cumsum()).cumcount()

输出:
     A  B
0 140 0
1 145 1
2 148 2
3 150 3
4 100 0
5 105 1
6 106 2

关于Python Pandas 逐行条件计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60456125/

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