Как удалить строки в Pandas DataFrame, которые являются частичными дубликатами? - PullRequest
0 голосов
/ 04 августа 2020

У меня есть DataFrame очищенных твитов, и я пытаюсь удалить строки твитов, которые являются частичными дубликатами.

Ниже приведен упрощенный DataFrame с той же проблемой. Обратите внимание, как у первого и последнего твита есть все, кроме прикрепленного URL-адреса, заканчивающегося общим; Мне нужен способ удалить частичные дубликаты, как этот, и сохранить только последний экземпляр.

data = {
    'Tweets':[' The Interstate is closed www.txdot.com/closed',\
                'The project is complete www.txdot.com/news',\
                'The Interstate is closed www.txdot.com/news'],
    'Date': ['Mon Aug 03 20:48:42', 'Mon Aug 03 20:15:42', 'Mon Aug 03 20:01:42' ]
}

df =pd.DataFrame(data)

Я пробовал удалять дубликаты с помощью метода drop_duplicates ниже, но, похоже, нет аргумента для выполнения sh это.

 df.drop_duplicates(subset=['Tweets'])

Есть идеи, как выполнить sh это?

1 Ответ

1 голос
/ 04 августа 2020

вы можете написать регулярное выражение, чтобы удалить sla sh идентифицировать каждый столбец по основной части url и игнорировать прямой sla sh.

df['Tweets'].replace('(www\.\w+\.com)/(\w+)',r'\1',regex=True).drop_duplicates()

Результаты

0    The Interstate is closed www.txdot.com
1     The project is complete www.txdot.com
Name: Tweets, dtype: object

мы можем передать индекс и создать логический фильтр.

df.loc[df['Tweets'].replace('(www\.\w+\.com)/(\w+)',r'\1',regex=True).drop_duplicates().index]


                                          Tweets                 Date
0  The Interstate is closed www.txdot.com/closed  Mon Aug 03 20:48:42
1     The project is complete www.txdot.com/news  Mon Aug 03 20:15:42
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...