gpt4 book ai didi

python - 将组中的第一个值复制到条件成立的所有行

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:22 24 4
gpt4 key购买 nike

已更新

我有一个 Pandas Dataframe,并且想要在条件满足时使用前行中的值

    df = pd.DataFrame(data=[[1, 2],
[1, 4],
[1, 2],
[1, 3],
[1, 2],
[5, 3],
[1, 4]],
columns=['A', 'B'])


df.loc[df.A < df.B, 'B'] = df.B.shift(1)
df.loc[df.A >= df.B, 'B'] = df.B

输出:

   A    B
0 1 NaN
1 1 2.0
2 1 4.0
3 1 2.0
4 1 3.0
5 5 3.0
6 1 3.0

但我想要得到的是以下内容:

   A    B
0 1 NaN
1 1 2.0
2 1 2.0
3 1 2.0
4 1 2.0
5 5 3.0
6 1 3.0

那么我如何基本上将 df.B.shift(1) 的结果“写入”数据框中,以便下一行可以再次使用它?

如果满足条件,则取前一行的结果,如果不满足,则保留该值。

最佳答案

我认为您正在寻找一个 groupby 转换 first:

df['B'] = df.groupby((df['A'] >= df['B']).cumsum())['B'].transform('first')
df
A B
0 1 2
1 1 2
2 1 2
3 1 2
4 1 2
5 5 3
6 1 3

关于python - 将组中的第一个值复制到条件成立的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53630619/

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