Преобразование поля в DataFrame по алгоритму

Есть такого вида DataFrame:

data = {
    'Name': ['John', 'Anna', 'Peter','Andrew'],
    'Score': ['J308670J308670J308671J308670','J308657J308657J308657J308657','J308740','J308657J308624J308657J308653'],
}

df = pd.DataFrame(data)

Надо преобразовать содержимое столбца Score по следующему алгоритму: "порезать" на фрагменты длиной 7 символов (куски всегда будут по шаблону JXXXXXX) и оставить только уникальные значения, разделив их пробелом. Кусков может быть от одного до "много" (реально - не более 100). Если будет проще - можно результат вывести в новый столбец.


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

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

Если я правильно понял вопрос, то сделать можно так:

df["Score"] = df["Score"].str.findall("J.{6}").apply(lambda x: " ".join(set(x)))

результат:

     Name                    Score
0    John          J308671 J308670
1    Anna                  J308657
2   Peter                  J308740
3  Andrew  J308653 J308657 J308624
→ Ссылка
Автор решения: Алексей Р

Вариант без apply

df["Score"] = df["Score"].str.extractall("(J.{6})").groupby(level=0).agg(set)[0].transform(' '.join)
     Name                    Score
0    John          J308670 J308671
1    Anna                  J308657
2   Peter                  J308740
3  Andrew  J308653 J308624 J308657
→ Ссылка