gpt4 book ai didi

python - 在 Python 中,如何像 R 一样进行 group by + mutate + ifelse?

转载 作者:行者123 更新时间:2023-11-28 20:14:24 26 4
gpt4 key购买 nike

我通常使用 R。如果我有这样的数据:

Product    Index   Value
a 1 0.5
a 1 0.4
c 1 1.4
c 2 0.75
e 2 0.6
f 3 0.9

如果我的 R 代码是:

a <- data %>%
group_by(Product) %>%
mutate(Flag=ifelse(all(Index==1),'right','wrong'))

这意味着,我首先按产品对数据进行分组。然后对于每个组,我都会给它一个名为 Flag 的新字段。如果本组Index全为1,则Flag正确,否则错误。同时,保留所有记录。所以,结果应该是这样的:

Product    Index   Value    Flag
a 1 0.5 right
a 1 0.4 right
c 1 1.4 wrong
c 2 0.75 wrong
e 2 0.6 wrong
f 3 0.9 wrong

我的问题是:如何在 python 中执行相同的操作?我试过,np.where,groupby,transform等功能。我可能以错误的方式组合它们。

最佳答案

使用转换是一种选择。

import pandas as pd

df = pd.DataFrame({'Product': ['a', 'a', 'c', 'c', 'e', 'f'],
'Index': [1, 1, 1, 2, 2, 3],
'Value': [0.5, 0.4, 1.4, 0.75, 0.6, 0.9]})
df['Flag'] = df.groupby('Product')['Index'].transform(lambda x: 'right' if sum(x)/len(x) == 1 else 'wrong')
df

附带说明一下,如果 Flag 值只是“正确”和“错误”,用 0,1 值替换它们可能更有效。

关于python - 在 Python 中,如何像 R 一样进行 group by + mutate + ifelse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49973323/

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