如何在过滤数据时将Isin、contains和区分大小写结合起来

2024-09-29 08:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,我有多个条件来过滤这些数据 例如:

state =  Andhra Pradesh, Uttar Pradesh, Madya Pradesh, Karnataka, Telangana 

以及

field_id = 23234,23235,34342,34343...

 Input: 
 --------
field_id,state,latitude,longitude
23234,Uttar Pradesh,28.05990445,78.34249247
23235,Uttar Pradesh,27.6206712,78.7132515
23236,Uttar Pradesh,27.95378227,79.04653615
23237,Uttar Pradesh,28.63232205,78.5763061
34342,Telangana,18.71517059,78.70715893
34343,Telangana,18.11666882,79.3873906
34344,Telangana,18.4527501,79.21027678
45452,Madhya Pradesh,21.70770808,75.67139279
45453,Madhya Pradesh,21.75613982,76.29656126
45454,Madhya Pradesh,22.05077277,79.2375098
56562,Karnataka,12.38318394,76.02965431
56563,Karnataka,12.38297092,76.02957524
56564,Karnataka,14.26369026,75.43180631
67672,Andhra Pradesh,16.83612945,80.99260486
67673,Andhra Pradesh,16.83277887,80.99537748
67674,Andhra Pradesh,16.83311322,80.99560818

我试过了

state = Andhra Pradesh,Madhya Pradesh,Karnataka
State1 = State.split(',')
dsna = dsna.loc[dsna['State'].isin(State1)]

它适用于完全匹配的情况

field_id = 23234,34345
field_id1 = field_id.split(',')
dsna = dsna.loc[dsna['field_id'].isin(field_id1)]

这里还过滤精确的数据帧

这里dsna是我的数据帧,我将附加该数据帧或表的csv

dsna = dsna.loc[dsna['field_id'].isin(field_id1)]
dsna = dsna.loc[dsna['State'].isin(State1)]

我想要基于regex格式的过滤数据 比如state=pradesh,telangana(我用小写) 它应该过滤所有与这些状态相关的数据,并列出经纬度 类似的方法field_id= 232,343,454应该过滤为数据创建的所有字段,期望数据应该与regex和区分大小写相关,并且过滤多个值任何功能都有助于做到这一点,因为我的数据已经在数据帧中


Tags: 数据idfieldlocstatestate1isinandhra