Итак, у меня есть pandas-массив данных, содержащий столбцы body и tag_text.Тело - это некоторый текст, а tag_text - это тег, данный этому тексту.Кадр данных организован следующим образом:
- Каждое тело имеет только один тег,
- Тело, которое будет иметь несколько тегов, представлено повторяющимися записями этого тела в кадре данных, с каждой записьюс другим значением tag_text.
Пример:
body, tag_text
"привет", "приветствие"
"привет", "английский"
"adios", "прощай"
"adios", "испанский"
Итак, мой вопрос: как мне эффективно создать новый фрейм данных, такой что:
- Каждое тело встречается только один раз во фрейме данных
- Поле tag_text для каждого тела теперь представляет собой список тегов, содержащий все теги, которые соответствуют этому телу.
Пример:
body, tag_text
"привет", ["приветствие", "английский"]
"адиос", ["прощай", "испанский"]
Вот мой быстрый и грязный способ, но он довольно неэффективен.Поэтому мне было бы интересно, если бы у людей были лучшие идеи.
def mergeTagsByBody(df):
bodies = df['body']
unique_bodies = list(set(bodies))
unique_tags = []
for body in unique_bodies:
body_tags = df[df['body'] == body]['tag_text']
unique_tags.append(body_tags)
return pd.DataFrame({'body': unique_bodies, 'tag_text': unique_tags})