gpt4 book ai didi

python - Pandas - 行是否低于具有列值和相同 id 的行

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:49 27 4
gpt4 key购买 nike

我是 Pandas 的新手。我有一个像这样的 Pandas 数据框:

df = pd.DataFrame(data={'id': [1, 1, 1, 2, 2, 2, 2], 'val1': [0, 1, 0, 0, 1, 0, 0]})

我想添加一列 val2,它指示一行是否低于另一行,该行具有与自身相同的 id,其中 val1 == 1.

结果将是一个像这样的数据框:

df = pd.DataFrame(data={'id': [1, 1, 1, 2, 2, 2, 2], 'val1': [0, 1, 0, 0, 1, 0, 0], 'val2': [0, 0, 1, 0, 0, 1, 1]})

我的第一个想法是使用 apply 语句,但这些只能按行进行。根据我的经验,循环永远不是答案。任何帮助将不胜感激!

最佳答案

让我们在 groupby 中尝试 shift + cumsum

df['val2'] = df.groupby('id').val1.apply(
lambda x: x.shift().cumsum()
).ge(1).astype(int)

或者,为了避免 lambda

df['val2'] = (    
df.groupby('id')
.val1.shift()
.groupby(df.id)
.cumsum()
.ge(1)
.astype(int)
)

df
id val1 val2
0 1 0 0
1 1 1 0
2 1 0 1
3 2 0 0
4 2 1 0
5 2 0 1
6 2 0 1

关于python - Pandas - 行是否低于具有列值和相同 id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50703367/

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