gpt4 book ai didi

python - 在 groupby 之后过滤行并应用函数

转载 作者:行者123 更新时间:2023-12-02 08:15:26 26 4
gpt4 key购买 nike

我正在使用 python 和 pandas 来处理一些数据。我的数据如下所示:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar'],
'B' : [1, 2, 3, 4, 5, 6],
'C' : [True, False, True, True, False, True]})
print(df)

A B C
0 foo 1 True
1 bar 2 False
2 foo 3 True
3 bar 4 True
4 foo 5 False
5 bar 6 True

我想做的事:

  1. 按“A”分组
  2. 按组选择值 B,其中 C == True
  3. 计算此选择的平均值
  4. 创建新列“D”来存储这些值

所以结果是:

    A   B   C       D
0 foo 1 True 2
1 bar 2 False 5
2 foo 3 True 2
3 bar 4 True 5
4 foo 5 False 2
5 bar 6 True 5

我尝试了一些 groupby、过滤器和转换的组合,但我无法成功使其工作。我想象解决方案接近以下内容

df.groupby(["A"])[df.loc[df["C"] == True, "B"]].transform("mean")

df.groupby(["A"]).filter(lambda x: x["D"] == True)["B"].transform("mean")

但是这些语法都不起作用。

感谢您帮助我和一般人,

最佳答案

使用Series.map对于过滤行的平均值,应省略==True:

df['D'] = df['A'].map(df.loc[df.C, 'B'].groupby(df["A"]).mean())
print(df)

A B C D
0 foo 1 True 2
1 bar 2 False 5
2 foo 3 True 2
3 bar 4 True 5
4 foo 5 False 2
5 bar 6 True 5

关于python - 在 groupby 之后过滤行并应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60706977/

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