简体   繁体   English

如何在过滤数据的同时结合Isin,contains和区分大小写

[英]how to combine Isin , contains ,with case sensitive while filtering data

I have a data frame and I have multiple conditions to filter that data for ex: 我有一个数据框,我有多个条件来过滤这些数据ex:

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

and

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

I tried 我试过了

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

Which works with exact match case 哪个适用于完全匹配的情况

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

Here also filters exact data frame 这里还过滤精确的数据帧

here dsna is my dataframe i will attach csv of that data frame or table 这里dsna是我的数据帧,我将附加该数据帧或表的csv

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

I wanted filter data based on regex format like state = pradesh,telangana ( i gave lower case) it should filter all data related to those states and list down latitude and longitude similar way field_id= 232,343,454 should filter all fields reated to data expecting data should relate to the regex and case sensitive and filter multiple values any pandas functionality helps to do that Since my data already in data frame 我想要基于正则表达式格式的过滤数据,如state = pradesh,telangana(我给出小写)它应该过滤所有与这些状态相关的数据并列出纬度和经度类似的方式field_id= 232,343,454应该过滤所有field_id= 232,343,454于数据的字段与正则表达式和区分大小写相关并过滤多个值任何pandas功能都有助于实现这一点因为我的数据已经在数据框中

By using Pandas 通过使用熊猫

dsna = dsna[dsna['State'].str.contains('|'.join(State),
                                                     case=False)]

I used | 我用过| to search throughout Strings. 在整个字符串中搜索。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM