首页 > 解决方案 > 基于范围列表过滤数据框

问题描述

可能我的问题的标题是某种错误的。目前我有一个清单:

a = [11,12,13,14,15,16,17,18,19,20,21,22,25,26,27,28,29,30,31,37,38,39]

和一个数据框df:

colfrom   colto
1          99
23         24
25         32
25         40

如何过滤我的数据框,它colfrom在数组 a 内或比它小,而colto在数组内或比它大?所以基本上这条规则会导致:

colfrom   colto
1          99
25         32
25         40 

唯一被踢出的行是第 2 行(或 python 第 1 行),因为 23 和 24 不在数组中(并且不低于 11 且不高于 39)。

标签: pythonpandas

解决方案


采用:

mask = ((df['colfrom'].isin(a)) | (df['colfrom']<min(a)) & (df['colto'].isin(a)) | (df['colto']>max(a)))
df[mask]

   colfrom  colto
0        1     99
2       25     32
3       25     40

推荐阅读