python - Python:当多列具有相同的值时,将最后一列替换为null
问题描述
我的数据如下所示:
文本 | 主题1 | 情绪1 | 主题2 | 情绪2 | 话题3 | 情绪3 |
---|---|---|---|---|---|---|
示例 1 | 食物 | 积极的 | 食物 | 消极的 | 旅行 | 积极的 |
示例 2 | 动物 | 积极的 | 动物 | 积极的 | ||
示例 3 | 旅行 | 消极的 | 旅行 | 消极的 | ||
示例 4 | 食物 | 积极的 |
我想确保对于给定的文本,相同的主题-情感组合不会出现多次。因此,如果情绪不同,同一主题只能出现不止一次。如果主题和情绪相同,则最后一个主题-情绪组合应为空。在上面的示例中,这是我想要的结果:
文本 | 主题1 | 情绪1 | 主题2 | 情绪2 | 话题3 | 情绪3 |
---|---|---|---|---|---|---|
示例 1 | 食物 | 积极的 | 食物 | 消极的 | 旅行 | 积极的 |
示例 2 | 动物 | 积极的 | ||||
示例 3 | 旅行 | 消极的 | ||||
示例 4 | 食物 | 积极的 |
我怎样才能在 Python 中做到这一点?
先感谢您!
解决方案
使用 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
推荐阅读
- css - 在 createMuiTheme 或 makeStyles / styled 中反应 Material UI DataGrid 样式 MuiDataGrid-window
- java - 寻找一个非递减的连续子数组
- vba - 将文本文件中的数据插入到相应的 excel 列中
- list - IndexError:弹出索引超出范围问题
- php - /wp-json/wp/v2/categories - 没有找到匹配 URL 和请求方法的路由。","data":{"status":404}}
- reactjs - 使用钩子的递归调用
- android - getContentResolver().insert 返回 null Cordova 插件
- ios - iOS:带有动画 UITabBarItem 的 Curverd AppTabBar
- reactjs - 如何在 React.js 中执行 python 脚本
- embedded - 如何在stm32的GPIO MODER寄存器中定义位