首页 > 解决方案 > 如何根据范围表中的值从数据框中选择行

问题描述

我有一个范围表(start,end)

name     blue         green          yellow        purple              
a        1,5                         654,678       11,15
b                     88761,88776  
c        1211,1215                   38,47    
d        89,95                                     1567,1578

像这样的数据框:

Supplier        colour                   
Abi             1                               
John            678          
Smith           120               
Tim             1570 
Don             87560                       

如何过滤df以仅包含列中的值在colour表中提供的范围内的行?我希望决赛df看起来像这样:

Supplier        colour                   
Abi             1                               
John            678                         
Tim             1570 

谢谢!

标签: pythonpandasdataframerangepandas-groupby

解决方案


尝试使用列表理解和loc

l = [x for i in df1[df1.columns[1:]].values.flatten().tolist() if ',' in str(i) for x in range(int(i.split(',')[0]), int(i.split(',')[1]) + 1)]
print(df2.loc[df2['colour'].isin(l)].reset_index(drop=True))

输出:

     Supplier        colour                   
0    Abi             1                               
1    John            678                         
2    Tim             1570 

推荐阅读