Извлечение всех строк в кадре данных, который содержит подстроку из столбца в другом кадре данных - PullRequest
0 голосов
/ 09 июля 2020

Предположим, у меня есть следующие два фрейма данных:

int = pd.DataFrame({'domain1':['ABC.6','GF53.7','SDC78.12','GGH7T.64'], 'domain2': ['UI76.89','76TH3.2','YU1QW.45','BY76.12']})

domain1         domain2
ABC.6           UI76.89
GF53.7          76TH3.2
SDC78.12        YU1QW.45
GGH7T.64        BY76.12

И еще один фрейм данных:

doms = pd.DataFrame({'domains':['GF53','VB96','UI76','GGH7T','BY76','ABC','SDC78']})



 domains
    GF53
    VB96
    UI76
    GGH7T
    BY76
    ABC
    SDC78

Я хочу создать новый фрейм данных, который будет включать все строки из 'int 'dataframe, только если значения в столбцах' domain1 'и' domain2 'содержат подстроки из столбца' domain 'во фрейме данных' doms '. Например, в этом случае результат должен выглядеть так:

domain1      domain2
ABC.6        UI76.89
GGH7T.64     BY76.12

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

просто некоторые str.contains смешанные с совместным регулярным выражением:

int[int.domain1.str.contains('|'.join(doms.domains)) &\
    int.domain2.str.contains('|'.join(doms.domains))]

    domain1  domain2
0     ABC.6  UI76.89
3  GGH7T.64  BY76.12
0 голосов
/ 09 июля 2020

попробуйте это, DataFrame.stack преобразует строки в столбцы, затем применит содержит, чтобы отфильтровать значения, за которыми следует DataFrame.unstack, чтобы вернуть исходные данные.

df[df.stack().str.contains("|".join(doms.domains)).unstack().all(axis=1)]

    domain1  domain2
0     ABC.6  UI76.89
3  GGH7T.64  BY76.12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...