Анализ и выборка уникальных сообщений

Просьба подсказать, как можно реализовать выборку по уникальным значениям, имея DF с текстовыми сообщениями.

Текст сообщений может содержать от 4 до 200+ символов, текстовые сообщение по типу: "Ваш ID 12345", "your ID 23432" или аналогичного характера, как на рус. так и на английском языке. Соответственно df с данными сообщениями может содержать от 100к до нескольки миллионов строк, где строка соответствует сообщению, необходимо проанализировать и получить по несколько уникальных примеров сообщений. Соответсвенно уникальными будут считаться, "Ваш ID xxxx", "your ID xxxx",. Соответсвенно DF может содержать различные шаблоны которые заранее не известны.

Входные данные:

---------------------
9089 | your ID 9897
9089 | is code 67567
9089 | code 90878
9089 | is code 67567
9089 | code 90878
8789 | code 78yh45
6078 | your ID is 908r78
7843 | Ваш ID 909r5

Нужно получить выборку уникальных сообщений в подобном формате по одному примеру каждого контента:

--------------------
9089 | your ID xxxx
9089 | is code xxxx
9089 | code xxxx
6078 | your ID is хххх
7843 | Ваш ID хххх
8789 | code ххххх

Ответы (1 шт):

Автор решения: MaxU

да, мне нужно получить уникальные сообщения которые будут отличаться только числами ID

In [389]: df
Out[389]:
     ID                msg
0  9089       your ID 9897
1  9089      is code 67567
2  9089         code 90878
3  9089      is code 67567
4  9089         code 90878
5  8789        code 78yh45
6  6078  your ID is 908r78
7  7843       Ваш ID 909r5

In [390]: res = df["msg"].str.replace(r"\d[\da-z]{2,}", "XXXX").drop_duplicates()

In [391]: res
Out[391]:
0       your ID XXXX
1       is code XXXX
2          code XXXX
6    your ID is XXXX
7        Ваш ID XXXX
Name: msg, dtype: object
→ Ссылка