gpt4 book ai didi

python - 过滤 2 列仅包含零值的行

转载 作者:行者123 更新时间:2023-12-01 08:10:57 24 4
gpt4 key购买 nike

示例 DF:

ID   Name        Price     Amount      Fit_Test
1 Apple 10 15 Super_Fit
2 Apple 10 0 Super_Fit
3 Apple 10 0 Super_Fit
4 Orange 12 20 Not_Fit
5 Orange 12 0 Not_Fit
6 Banana 15 17 Medium_Fit
7 Banana 15 0 Medium_Fit
8 Pineapple 25 19 Medium_Fit
9 Pineapple 25 18 Medium_Fit
10 Cherry 30 56 Super_Fit
11 XXX 50 0 Medium_Fit
12 XXX 50 0 Medium_Fit

预期 DF:

    ID   Name        Price     Amount           Fit_Test
1 Apple 10 15 Super_Fit
2 Apple 10 0 Super_Fit
3 Apple 10 0 Super_Fit
4 Orange 12 20 Not_Fit

6 Banana 15 17 Medium_Fit

8 Pineapple 25 19 Medium_Fit
9 Pineapple 25 18 Medium_Fit
10 Cherry 30 56 Super_Fit
11 XXX 50 0 Medium_Fit
12 XXX 50 0 Medium_Fit

问题陈述:

我想按名称价格进行分组,然后使用基于金额进行过滤>Fit_Test 作为条件列。

  1. 如果 Fit_Test 是 Super_Fit 则不需要进行任何操作。 (第 1、2、3 和 10 行在输入和预期 DF 中相同)

  2. 如果在名称价格条件内,并且Fit_Test不是Super_Fit,请检查它是否有金额 as 0 然后且仅删除该行(ID 4,5,6,7 以及预期的 5 和 7 被删除)

    <
  3. 如果在名称价格条件内,并且Fit_Test不是Super_Fit,并且契约(Contract)金额的值大于零,则不要删除任何行(第8行和第9行在输入和预期DF中相同)

  4. 如果在名称价格条件下,且Fit_Test不是Super_Fit,且契约(Contract)金额的所有值均为零,则< strong>不要删除任何行(第 11 行和第 12 行在输入和预期 DF 中相同)

我可以解决它删除所有零但对条件列没有帮助的解决方案

最佳答案

您可以链接 2 个条件 - 比较 Fit_Test 并按 GroupBy.transform 检查每组是否所有 True。和 GroupBy.all第二次比较不等于:

m1 = df['Fit_Test'].eq('Super_Fit').groupby([df['Name'],df['Price']]).transform('all')
m2 = df['Amount'].ne(0)

df = df[m1 | m2]
print (df)
ID Name Price Amount Fit_Test
0 1 Apple 10 15 Super_Fit
1 2 Apple 10 0 Super_Fit
2 3 Apple 10 0 Super_Fit
3 4 Orange 12 20 Not_Fit
5 6 Banana 15 17 Medium_Fit
7 8 Pineapple 25 19 Medium_Fit
8 9 Pineapple 25 18 Medium_Fit
9 10 Cherry 30 56 Super_Fit

关于python - 过滤 2 列仅包含零值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55256464/

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