Адрес совпадает с двумя столбцами Python - PullRequest
0 голосов
/ 06 февраля 2019

Предположим, у меня есть два столбца в кадре данных:

Столбец 1:

Строка 1: переполнение стека

Строка 2: Python

Столбец 2:

Строка 1: ['Stack', 'Overck Stack'] *

Строка 2: ['Python Programming', 'Python Snake']

Я хочу сделать точное совпадение строк (необязательно) и вернуть флаг соответствующим образом.

Вывод:

[0] Совпадение

[1] Несоответствие

Попытка: Iпробовал функцию 'in' в цикле, но это дает частичное совпадение также как 'Match'.

Код:

for (item, Value),(item1, Value1) in zip(df1['Column1'].iteritems(),df2['Column2'].iteritems()):

    if str(Value).strip() in str(Value1).strip():
       found.append(1)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

хорошо, я постараюсь ответить на этот вопрос, так что, если у кого-то еще есть подобные проблемы.По сути, вы хотите проверить, есть ли значения col1 в col2 (список).Вы можете легко использовать isin.Примените функцию numpy where, вы можете создать флаг.

вот макет.

df = pd.DataFrame({
    'col1': ['Stack Overflow', 'Python'], 
    'col2': [ ['Stack', 'Stack Overflow'],  ['Python Programming', 'Python Snake']]})


df['Flag'] =df.apply(lambda x: x['col1'] in x['col2'], axis=1)
df

результаты ниже:

    col1    col2    Flag
0   Stack Overflow  [Stack, Stack Overflow] True
1   Python  [Python Programming, Python Snake]  False

дайте мне знать, если этоработы.

0 голосов
/ 06 февраля 2019

Я думаю, вам нужно:

def isMatch(row):
    for i in row['b']:
        if i == row['a']:
            return 'Match'
    return 'Not Match'

df['c'] = df.apply(lambda x: isMatch(x), axis=1)
print(df)
...