Python: когда несколько столбцов имеют одинаковое значение, замените последний на null

#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