как объединить Isin, содержит, с учетом регистра при фильтрации данных - PullRequest
0 голосов
/ 16 мая 2019

У меня есть фрейм данных, и у меня есть несколько условий для фильтрации этих данных Например:

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)]

Я хотел отфильтровать данные на основе формата регулярных выражений как штат = прадеш, телангана (я дал нижний регистр) он должен фильтровать все данные, относящиеся к этим состояниям, и перечислять широту и долготу Аналогичным образом field_id= 232,343,454 должен фильтровать все поля, относящиеся к данным. Ожидаемые данные должны относиться к регулярному выражению и чувствительны к регистру, а также фильтровать множественные значения, что может сделать любая функциональность панд, поскольку мои данные уже находятся во фрейме данных

1 Ответ

0 голосов
/ 28 мая 2019

Используя Pandas

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

, я использовал | для поиска по всем строкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...