Как мне найти строку в столбце панд и добавить в строку на основе этой строки? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть фрейм данных pandas, и я хочу выполнить поиск по строкам в столбце A, если есть совпадение, которое я хочу добавить 1 к новому столбцу, если нет совпадений, я хочу добавить 0 .

Мой ДФ в настоящее время выглядит так:

Column A          | Column B | Column C
company one       |   314    |   0.9
company one toast |   190    |   0.3
www.companyone    |   380    |   0.87
companyone home   |   850    |   0.1
toaster supplies  |   1100   |   0.5
toast rack        |   200    |   0.7
...

Я пытаюсь написать функцию, которая будет считывать column A, и, если есть совпадение либо с компанией, либо с компанией, добавьте 1 в конце строки. Если совпадений нет, добавьте 0. Результат, который я ищу:

    Column A          | Column B | Column C | Branded
    company one       |   314    |   0.9    |   1
    company one toast |   190    |   0.3    |   1
    www.companyone    |   380    |   0.87   |   1
    companyone home   |   850    |   0.1    |   1
    toaster supplies  |   1100   |   0.5    |   0
    toast rack        |   200    |   0.7    |   0
    ...

Я пробовал эту функцию:

def branded(table):

    if 'company.*?one' in table[table['Column A']]:
        table['Branded'] = 1
    else:
        table['Branded'] = 0

    return table.head()

Однако я получаю KeyError. Я не уверен, что мне не хватает, хотя.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Решение, опубликованное zipa, на мой взгляд, лучше. Тем не менее, мысль о том, чтобы поделиться этим, является верной версией в случае, если строки, которые нужно искать, имеют совершенно другую структуру. Вы можете добавить слова в список, а затем выполнить нечто подобное:

import pandas as pd

df = pd.DataFrame({'column':['company one','companyone', 'company two']})
search = ['company one', 'companyone']
string_search = '|'.join(search)
df['flag'] = df['column'].str.contains(string_search)
df['flag'] = df['flag'].map({True: 1, False: 0})
0 голосов
/ 11 мая 2018

Вы можете сделать это так:

df['Branded'] = df['Column A'].str.contains('company.*?one')*1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...