【发布时间】:2022-01-19 06:45:40
【问题描述】:
我有一个 CSV 数据集,我需要使用条件对其进行过滤,但问题是条件可能持续多天。我想要的是保留此条件的最后一个真实值。
我的数据集是这样的
Date City Summary FlightNo. Terminal Company
2-18-2019 NY Airplane Land 23 7 Delta
2-18-2019 London Cargo handling 4 5 British
2-18-2019 Dubai Airplane land 92 7 Emirates
2-19-2019 Dubai Airplane stay 92 5 Emirates
2-19-2019 Paris Flight cancel 78 2 British
2-19-2019 London Airplane Land 4 5 British
2-19-2019 LA Airplane Land 7 2 United
2-20-2019 Dubai Airplane land 92 3 Emirates
2-20-2019 LA Airplane land 29 3 Delta
2-20-2019 NY Airplane left 23 1 Delta
2-21-2019 Paris Airplane reschedu 78 2 British
2-21-2019 London Airplane land 4 3 British
2-21-2019 LA Airplane from NY land 29 5 Delta
~~~
3-10-2019 London Airplane land 5 5 KLM
3-10-2019 Paris Airplane Land 78 7 AirFrance
3-10-2019 LA Reschedule 29 4 United
3-11-2019 NY Cargo handled 23 7 Delta
3-11-2019 Dubai Arrived be4 2 day 34 7 Etihad
~~~
3-21-2019 Dubai Airplane land 92 5 Emirates
3-21-2019 New Delhi Reschedule 9 4 AirAsia
3-21-2019 London Cargo handling 5 2 Lufthansa
3-22-2019 New Delhi Airplane Land 9 3 AirAsia
3-22-2019 NY Reschedule 23 2 United
3-22-2019 Dubai Airplane land 35 1 Emirates
所以代码应该为我们提供飞机着陆的最后一个条目City == City 和Flight No. == Flight No 和Company == Company。如您所见,这种情况可能持续多天。因此,如果所有三个条件都为真并且摘要包含 Airplane Lands,则返回最后一个为真
已编辑 所需的输出应该类似于下面的数据集:
Date City Summary FlightNo. Terminal Company
2-18-2019 NY Airplane Land 23 7 Delta
2-19-2019 LA Airplane Land 7 2 United
2-20-2019 Dubai Airplane land 92 3 Emirates
2-21-2019 London Airplane Land 4 3 British
2-21-2019 LA Airplane from NY land 29 5 Delta
~~~
3-10-2019 London Airplane land 5 5 KLM
3-10-2019 Paris Airplane Land 78 7 AirFrance
~~~
3-21-2019 Dubai Airplane land 92 5 Emirates
3-22-2019 New Delhi Airplane Land 9 3 AirAsia
3-22-2019 Dubai Airplane land 35 1 Emirates
如上图删除行,所有三列(City、FlightNo.和Company)都应该相同,如果其中任何一个不同,那么这两行都应该保留。
它的逻辑: 条件 1:如果 df[Summary] 包含“Airplane”和“land”,则返回该行 条件 2:来自已过滤的数据集 如果 df[City] == df[City] 和 df[FlightNo.] == df[FlightNo.] 和 df[Company] == df[Company] 在 3 天内为真,则保留其中一个最后一个或第一个。 因此,如果在 18 日和 20 日返回飞机降落在同一城市且由同一公司运营的相同航班号的行,则应仅保留 1 天行。但如果是同一个月的 1 日和 15 日,则保留这两行。
请帮我找到适用所有条件的内容并保留最后一个 True 条目。
编辑:
如果在接下来的 3 天内条件为真,请先保留 输入
print (df)
Date City Code Summary Flight No. Company
0 2-18-2019 021 Airplane land 23 Emirates
1 2-18-2019 013 Airplane land 23 Etihad
2 2-19-2019 021 Airplane land 23 Emirates
3 2-19-2019 013 Airplane Land 23 Etihad
4 2-20-2019 021 Airplane land 23 Emirates
5 2-20-2019 055 Airplane land 23 Emirates
6 2-20-2019 013 Airplane land 23 Etihad
7 2-21-2019 021 Airplane land 23 Emirates
8 2-21-2019 013 Airplane land 78 Emirates
9 2-21-2019 055 Airplane from NY land 23 Emirates
10 2-22-2019 021 Airplane land 78 Emirates
11 2-22-2019 013 Airplane Land 78 Emirates
12 2-22-2019 055 Airplane land 78 Emirates
13 2-23-2019 021 Airplane land 78 Etihad
输出:
print (df)
Date City Code Summary Flight No. Company
0 2-18-2019 021 Airplane land 23 Emirates
1 2-18-2019 013 Airplane land 23 Etihad
5 2-20-2019 055 Airplane land 23 Emirates
7 2-21-2019 021 Airplane land 23 Emirates
8 2-21-2019 013 Airplane land 78 Emirates
10 2-22-2019 021 Airplane land 78 Emirates
12 2-22-2019 055 Airplane land 78 Emirates
【问题讨论】:
标签: python pandas dataframe if-statement filter