Python Pandas str.содержит() с гиперссылками в строках

0

Вопрос

У меня есть два фрейма данных панд, вот так:

df1

Сайт Ссылка
retailer_site1 https://www.retailer_site1.com
... ...
retailer_siteX https://www.retailer_siteX.com

df2

Сайт Ссылка
retailer_site1 https://www.retailer_site1.com
... ...
retailer_siteY https://www.retailer_siteY.com

Поэтому я хочу пройти через df2 и найти экземпляры ссылок из df2 в df1. Вот мой код:

    for row in df2['link'].astype(str):
        boolean_findings = df1['link'].str.contains(row)

Когда я печатаю boolean_findings, я получаю все ложные, что, как я знаю, не может быть правдой, потому что я вижу совпадения локально в своих файлах excel:

логические привязки
Ложный
Ложный
...
Ложный

Я хочу знать, почему текст строки гиперссылки не сопоставляется с его эквивалентом в первом df, и что я могу сделать, чтобы сопоставить сайты.

dataframe hyperlink pandas python
2021-10-22 22:50:57
1

Лучший ответ

1

"Я посмотрел и заметил, что на некоторых сайтах есть ( и ) включены в их ссылки, что может привести к удалению ссылок

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

df2["link"].str.replace(r'\W+','', regex=True).isin(
    df1["link"].str.replace(r'\W+','', regex=True))

То .str.replace(r'\W+','', regex=True) часть удалит все символы, кроме букв, диакритических знаков, цифр и знаков препинания соединителя (наиболее распространенным символом среди них является подчеркивание) из ссылок.

2021-10-23 10:27:53

Я получил следующую ошибку для регулярного выражения в замене: TypeError: replace() takes no keyword arguments. Когда я удалю regex=True, это не приводит к ошибке, но и не заменяет ее. Я думаю, что посмотрю в re модуль, чтобы разобраться в этом, но спасибо, что наставили меня на правильный путь!
G H

@GH Убедитесь, что вы используете последнюю версию Pandas. pip install -U pandas. Этот код был протестирован на соответствие вашим данным и доказал свою работоспособность.
Wiktor Stribiżew

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................