#python #dataframe #loops
Вопрос:
мои данные выглядят так:
Текст | Тема 1 | Сентиментальность1 | Тема 2 | Сентиментальность2 | Тема 3 | Сентиментальность3 |
---|---|---|---|---|---|---|
Пример1 | Еда | положительный | Еда | отрицательный | Путешествия | положительный |
Пример2 | Животные | положительный | Животные | положительный | ||
Пример3 | Путешествия | отрицательный | Путешествия | отрицательный | ||
Пример4 | Еда | положительный |
Я хочу убедиться, что одна и та же комбинация темы и настроения не может встречаться более одного раза для данного текста. Таким образом, одна и та же тема может возникать более одного раза только в том случае, если настроения разные. Если тема и настроение совпадают, последняя комбинация тема-настроение должна быть равна нулю. В приведенном выше примере это мой желаемый результат:
Текст | Тема 1 | Сентиментальность1 | Тема 2 | Сентиментальность2 | Тема 3 | Сентиментальность3 |
---|---|---|---|---|---|---|
Пример1 | Еда | положительный | Еда | отрицательный | Путешествия | положительный |
Пример2 | Животные | положительный | ||||
Пример3 | Путешествия | отрицательный | ||||
Пример4 | Еда | положительный |
Как я могу сделать это на Python?
Заранее благодарю вас!
Комментарии:
1. В python существует множество библиотек для обработки табличных данных. Вы можете отдать здесь некоторое предпочтение, чтобы другие могли лучше вам помочь. Например, если вы или ваша команда сейчас используете какие-либо библиотеки.
Ответ №1:
Используйте Панды, а в качестве столбцов используйте текст, тему и настроение. Затем отбросьте дубликаты, чтобы сохранить только уникальные комбинации. Если вы хотите в конце отчитаться по тексту и поместить все записи в одну строку, вы можете сгруппировать текст и отчитаться по всем столбцам и назвать их topic1, topic2 и т. Д.
row1list = ['text1', 'food', 'positive']
row2list = ['text1', 'food', 'positive']
row3list = ['text2', 'python', 'positive']
df = pd.DataFrame([row1list, row2list, row3list], columns=['Text', 'Topic', 'Sentiment'])
df = df.drop_duplicates()
print(df)
# Text Topic Sentiment
# 0 text1 food positive
# 2 text2 python positive