gpt4 book ai didi

python - 按较低级别的值过滤多级数据框

转载 作者:行者123 更新时间:2023-12-04 09:40:16 26 4
gpt4 key购买 nike

我有一个包含三个级别的数据框,我们称它们为 Class -> Group -> Value:

Class   Group   Value   Fail
A 1 0 False
A 1 1 True
A 2 0 False
A 2 1 True
A 2 2 True
A 3 2 True
A 3 5 True
B 4 2 False
B 4 7 True
B 4 8 True
B 4 12 True
B 4 15 True
B 5 1 False
B 5 2 False
B 5 3 True
B 6 7 False
B 6 8 False

我需要获取组中的最小值等于类中的最小值的组,其中 Fail==True :
Class   Group   Value   Fail
A 1 0 False
A 1 1 True
A 2 0 False
A 2 1 True
A 2 2 True
B 5 1 False
B 5 2 False
B 5 3 True

所以在A类中,最小值为 Fail==True为 1,在第 1 组和第 2 组中。在 B 类中为 Fail==True 的最小值在第 5 组中是 3。

这该怎么做?

最佳答案

您需要 groupby.transform ,一次在类里面,一次在小组上,得到 min的值(value)。你想要两者相等的地方 eq

df[df['Value'].where(df['Fail']).groupby(df['Class']).transform('min')
.eq(df['Value'].where(df['Fail']).groupby(df['Group']).transform('min'))]
Class Group Value Fail
0 A 1 0 False
1 A 1 1 True
2 A 2 0 False
3 A 2 1 False
4 A 2 2 True
12 B 5 1 False
13 B 5 2 False
14 B 5 3 True

如果你在几个 Class 中有相同的 Group name,你应该考虑使用第二个 groupby在类(class)和组上。
df[df['Value'].where(df['Fail']).groupby(df['Class']).transform('min')
.eq(df['Value'].where(df['Fail']).groupby([df['Class'], df['Group']]).transform('min'))]

关于python - 按较低级别的值过滤多级数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62364278/

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