python - 根据配对条件过滤 Pandas

标签 python pandas filter

我无法使用 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 - SFOLAX-HOU。这与配对条件不匹配。

谢谢!

最佳答案

IIUC,您需要过滤与您的元组列表匹配的行,使用:

df.set_index(['Dest','Origin']).loc[top_5_route].reset_index()

关于python - 根据配对条件过滤 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844431/

相关文章:

java - 如何对直接在webapps下的资源请求应用过滤器

matlab - 使用傅立叶变换和 MATLAB 过滤信号噪声

python - 在 python 中,如何创建相互迭代的两列?

python - 如何编辑 matplotlib 条形图中 x 位置的默认索引值

python - docker/ celery : Can't get celery to run

python - numpy apply_along_axis 具有不同的结果大小

Pandas 将切割中的列添加到 DataFrame

javascript - Json Pipe - 无法将字段设置为空

python - 导入错误 : Could not find 'cudart64_100. dll

python - 为什么在将字符串添加到列表时增强赋值的行为不同