我无法使用 groupby 条件的结果来过滤数据帧。我已经尝试将掩码与 isin()
结合使用,但它不仅仅返回配对条件。
假设我有一个如下所示的数据集:
Dest Origin DepDelay
0 TPA IAD 8.0
1 TPA IAD 19.0
2 BWI IND 8.0
4 BWI IND 34.0
5 JAX IND 25.0
6 LAS IND 67.0
8 MCI IND 2.0
10 MCO IND 6.0
11 MCO IND 94.0
... .... ... ...
7009710 ATL MSP 30.0
我想使用 groupby 条件的结果来过滤它,我得到了所有前 5 条路线。为了获取路线,我使用了以下代码:
top_5_route = Flights_df[flights_df['DepDelay'] > 0].groupby(['Origin', 'Dest'])['Dest'].size().nlargest(5).index.to_list ()
top_5_路线:
[('LAX', 'SFO'),
('DAL', 'HOU'),
('SFO', 'LAX'),
('ORD', 'LGA'),
('HOU', 'DAL')]
我想根据此标签过滤此数据帧,以仅获取“起源 - 目的地”的配对条件。例如,新数据帧应仅包含起点为 LAX
且目标为 SFO
的值以及其他配对条件。
如果我使用 isin
方法,数据帧还将包含值 LAX - SFO
、LAX-HOU
。这与配对条件不匹配。
谢谢!
最佳答案
IIUC,您需要过滤与您的元组列表匹配的行,使用:
df.set_index(['Dest','Origin']).loc[top_5_route].reset_index()
关于python - 根据配对条件过滤 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844431/