Извлечение строки с помощью функции - PullRequest
0 голосов
/ 26 октября 2019

На самом деле у меня есть фреймы данных о потоке кликов с примерно 4 миллионами строк. У меня много столбцов, и два из них основаны на URL и домене. У меня есть словарь и хочу использовать его как условие. Например: если домен равен amazon.de, а URL содержит ключевое слово pillow, столбец будет иметь значение pillow. И так далее.

dictionary_keywords = {"amazon.de": "pillow", "rewe.com": "apple"}

ID   Domain                  URL
1    amazon.de               www.amazon.de/ssssssss/exapmle/pillow
2    rewe.de                 www.rewe.de/apple

Ожидаемый вывод должен быть новым столбцом:

ID   Domain                  URL                                    New_Col
1    amazon.de               www.amazon.de/ssssssss/exapmle/pillow  pillow
2    rewe.de                 www.rewe.de/apple                       apple

Я могу использовать метод .str.contain вручную, но мне нужно определить функцию, которая принимает ключ и значение словаря какусловие.

Примерно так df[df['domain] == 'amazon.de'] & df[df['url'].str.contains('pillow')

Но я не уверен. Я новичок в этом.

1 Ответ

0 голосов
/ 26 октября 2019

Я предпочитаю решать подобные проблемы, используя df.apply() по строке (axis=1) с пользовательской функцией для работы с логикой.

import pandas as pd

dictionary_keywords = {"amazon.de": "Pillow", "rewe.de": "Apple"}
df = pd.DataFrame({
    'Domain':['amazon.de','rewe.de'],
    'URL':['www.amazon.de/ssssssss/exapmle/pillow', 'www.rewe.de/apple']
})

def f(row):
    global dictionary_keywords
    try:
        url = row['URL'].lower()
        domain = url.split('/')[0].strip('www.')
        if dictionary_keywords[domain].lower() in url:
            return dictionary_keywords[domain]
    except Exception as e:
        print(row.name, e)
    return None #or False, or np.nan

df['New_Col'] = df.apply(f, axis=1)

Вывод:

print(df)

      Domain                                    URL New_Col
0  amazon.de  www.amazon.de/ssssssss/exapmle/pillow  Pillow
1    rewe.de                      www.rewe.de/apple   Apple
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...