gpt4 book ai didi

python - 比较日期并根据条件过滤组内的行

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

示例 DF:

ID   Name        Price     Date             Fit_Test
1 Apple 10 2018-01-15 Super_Fit
2 Apple 10 2018-01-15 Super_Fit
3 Apple 10 2019-01-15 Super_Fit

4 Orange 12 2019-02-15 Not_Fit
5 Orange 12 2018-09-25 Not_Fit
6 Orange 12 NaT Not_Fit
7 Orange 12 2028-01-25 Not_Fit

8 Banana 15 2019-12-25 Medium_Fit
9 Banana 15 NaT Medium_Fit

10 Cherry 30 2021-06-23 Super_Fit

11 PineAp 30 2023-02-03 Medium_Fit
12 PineAp 30 2020-12-13 Medium_Fit

预期 DF:

ID   Name        Price     Date             Fit_Test
1 Apple 10 2018-01-15 Super_Fit
2 Apple 10 2018-01-15 Super_Fit
3 Apple 10 2019-01-15 Super_Fit

7 Orange 12 2028-01-25 Not_Fit

8 Banana 15 2019-12-25 Medium_Fit
9 Banana 15 NaT Medium_Fit

10 Cherry 30 2021-06-23 Super_Fit

11 PineAp 30 2023-02-03 Medium_Fit

问题陈述:

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

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

  2. 如果在 NamePrice 条件下且 Fit_Test 不是 Super_Fit 并且没有 NaT > 然后比较该组中的日期,以最高日期保留它 (ID 11&12 和预期 12 中的被删除)

  3. 如果在 NamePrice 条件下且 Fit_Test 不是 Super_Fit 并且存在 NaT 在该组中:

    3.1 如果该组中的计数大于 2,则比较日期,以最高日期保留它 (ID 4,5,6,7 和预期 4 ,5,6被删除)

    3.2 如果该组中的计数等于 2,则保留两行 ** (ID 8,9 和预期 8,9 在那里)**

最佳答案

用途:

df['Date'] = pd.to_datetime(df['Date'])

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

m2 = df['Date'].notna().groupby([df['Name'],df['Price']]).transform('all')

m22 = df['Date'].eq(df.groupby(['Name', 'Price'])['Date'].transform('max'))

m3 = df.groupby(['Name', 'Price'])['Date'].transform('size').eq(2)

df = df[m1 | (m2 & m22) | (~m2 & m3) | (~m2 & m22)]
#it seems conditions should be simplify
#df = df[m1 | m22 | (~m2 & m3)]
print (df)
ID Name Price Date Fit_Test
0 1 Apple 10 2018-01-15 Super_Fit
1 2 Apple 10 2018-01-15 Super_Fit
2 3 Apple 10 2019-01-15 Super_Fit
6 7 Orange 12 2028-01-25 Not_Fit
7 8 Banana 15 2019-12-25 Medium_Fit
8 9 Banana 15 NaT Medium_Fit
9 10 Cherry 30 2021-06-23 Super_Fit
10 11 PineAp 30 2023-02-03 Medium_Fit

关于python - 比较日期并根据条件过滤组内的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258691/

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