Как сопоставить ключевые слова в серии панд - PullRequest
0 голосов
/ 23 декабря 2019

Я хочу перебрать все строки в одном из моих столбцов Dataframe с именем Subject и найти несколько ключевых слов из словаря с именем keyword . Если ключ из словаря соответствует слову в столбце Dataframe, я хочу добавить пару значений словаря для соответствующего ключа в новый столбец в Dataframe с именем Category . Мой код ниже был моей первой идеей добавить значения в список, а затем добавить список в качестве нового столбца в мой Dataframe, но, очевидно, индексы не будут совпадать. Есть ли способ добавить значение ключевого слова непосредственно в фрейм данных, когда ключ соответствует в столбце темы?

'' '

tickets = pd.read_csv('All VS Tickets with Category.csv',parse_dates=['Creation Date'])
tickets = tickets.fillna('')

keywords = {'BOR':'Broker of Record','New Vendor':'New Vendor Build'}
Category_column = []

def indexmatch(subject):
    for key, value in keywords.items():
        if key in subject:
            print('Match')
            Category_column.append(values)
        else:
            print('No Match')
            Category_column.append('')


tickets['Subject'].apply(indexmatch)
Category_column = pd.Series(Category_column)
tickets.insert(0,column='Category',value=Category_column)

' ''

Изображение примера кода

1 Ответ

0 голосов
/ 23 декабря 2019

Вы можете extract ваши ключевые слова, а затем map:

keywords = {'BOR':'Broker of Record','New Vendor':'New Vendor Build'}

df = pd.DataFrame({"Category":["Something BOR","Something New Vendor","Something for nothing"]})

df["new"] = df["Category"].str.extract(f"({'|'.join(keywords)})",expand=False).map(keywords)

print (df)

                Category               new
0          Something BOR  Broker of Record
1   Something New Vendor  New Vendor Build
2  Something for nothing               NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...