首页 > 解决方案 > Python:当多列具有相同的值时,将最后一列替换为null

问题描述

我的数据如下所示:

文本 主题1 情绪1 主题2 情绪2 话题3 情绪3
示例 1 食物 积极的 食物 消极的 旅行 积极的
示例 2 动物 积极的 动物 积极的
示例 3 旅行 消极的 旅行 消极的
示例 4 食物 积极的

我想确保对于给定的文本,相同的主题-情感组合不会出现多次。因此,如果情绪不同,同一主题只能出现不止一次。如果主题和情绪相同,则最后一个主题-情绪组合应为空。在上面的示例中,这是我想要的结果:

文本 主题1 情绪1 主题2 情绪2 话题3 情绪3
示例 1 食物 积极的 食物 消极的 旅行 积极的
示例 2 动物 积极的
示例 3 旅行 消极的
示例 4 食物 积极的

我怎样才能在 Python 中做到这一点?

先感谢您!

标签: pythondataframeloops

解决方案


使用 Pandas,并将文本、主题和情绪作为列。然后删除重复项以仅保留唯一组合。如果你想在最后按文本报告并将所有条目放在一行中,你可以按文本分组并报告所有列,并将它们称为 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

推荐阅读