python - 在 Pandas 中重命名多个列值
问题描述
我将客户评论存储在 Pandas 列“情绪”中。这是结果data['Sentiment'].unique()
:
array(['Negative', 'Positive', '?', 'Neutral', 'nan', 'positive',
'neutral', 'negative', 'Neg', 'ppos', 'ne'], dtype=object)
我正在尝试将值分组为“正”、“负”和“中性”,并创建了三个映射列表:
positive = ['Positive','positive', 'ppos']
negative = ['Negative', 'negative', 'Neg']
neutral = ['Neutral', 'neutral', 'ne']
其他一切都应该是NAn。我尝试了iterrows()
以下方法:
for idx, row in data.iterrows():
if row['Sentiment'].isin(positive):
row['Sentiment'] == 'positive'
...
不起作用,而且似乎也没有效率。我尝试了系列和布尔值,这似乎是一种很有前途的方法,但我真的想知道是否有一些简洁的解决方法。
解决方案
使用numpy.select。将条件作为第一个参数传递,与条件对应的值作为第二个参数,不匹配任何条件的默认值。
import numpy as np
conditions = [
df['Sentiment'].isin(positive),
df['Sentiment'].isin(neutral),
df['Sentiment'].isin(negative)
]
values = ['positive', 'neutral', 'negative']
df['Sentiment'] = np.select(conditions, values, np.nan)
推荐阅读
- r - 如何在 R Shiny 中上传 3 个 bamfile,然后合并为一个?
- ios - 在 Flutter 2.0.4 上构建 iOS 应用程序错误:找不到“Flutter/Flutter.h”文件
- vb.net - 如何替换列表框vbnet中的单词或字符?
- javascript - 根据文本区域的值加入输入
- javascript - ReactJs 错误:渲染后需要分号
- javascript - 该脚本如何在“对象”上使用“推送”?
- c# - 当我调用 SendKeys 方法时,我的驱动程序不会更新 URL。SeleniumWebDriver,C#
- api - REST API:如何根据运行时应用程序状态管理同一资源的不同表示?
- python - 使用 pybnb 包进行分支和绑定
- flutter - Flutter appbar 动作调用底部导航栏子方法