вернуть True, если частичное совпадение между двумя столбцами успешно - PullRequest
2 голосов
/ 04 августа 2020

Я ищу частичное совпадение. ниже приведен код для фрейма данных.

import pandas as pd
data = [['tom', 10,'aaaaa','aaa'], ['nick', 15,'vvvvv','vv'], ['juli', 14,'sssssss','kk']] 
# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Age','random','partial'])
df

Вывод: я ожидаю вывода, показанного ниже

   Name  Age   random partial  Matches
0   tom   10    aaaaa     aaa  True
1  nick   15    vvvvv      vv  True
2  juli   14  sssssss      kk  False

Ответы [ 2 ]

2 голосов
/ 04 августа 2020
df['Matches'] = df.apply(lambda row: row['partial'] in row['random'], axis = 'columns')
df

дает


Name    Age random  partial Matches
0   tom 10  aaaaa   aaa True
1   nick    15  vvvvv   vv  True
2   juli    14  sssssss kk  False
2 голосов
/ 04 августа 2020

Вы можете использовать df.apply в сочетании с лямбда-функцией, которая проверяет, является ли частичная строка частью другой строки, используя in.

Затем мы можем назначить это в новый столбец в фрейме данных:

>>>import pandas as pd
>>>data = [['tom', 10,'aaaaa','aaa'], ['nick', 15,'vvvvv','vv'], ['juli',14,'sssssss','kk']] 
>>>df = pd.DataFrame(data, columns = ['Name', 'Age','random','partial'])

>>>df['matching'] = df.apply(lambda x : x.partial in x.random, axis=1)
>>>print(df)
   Name  Age   random partial  matching
0   tom   10    aaaaa     aaa      True
1  nick   15    vvvvv      vv      True
2  juli   14  sssssss      kk     False

Одна важная вещь, о которой следует помнить при использовании df.apply, - это аргумент axis, поскольку здесь он позволяет нам получить доступ ко всем столбцам данной строки в один раз.

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