You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于条件为在线评论DataFrame创建主题-标签虚拟变量

实现主题-情感组合虚拟变量的方法

你可以用Python的Pandas库轻松实现这个需求,下面提供两种可行方案:

方法一:逐行赋值(直观易懂)

这种方法逻辑清晰,适合理解需求细节,步骤如下:

  1. 导入Pandas并构造测试数据(如果你的数据已经是DataFrame,可跳过这一步)
import pandas as pd

# 原数据构造
data = {
    'reviewId': ['01', '02', '03', '04', '05'],
    'topic': [2, 2, 0, 5, 1],
    'label': ['negative', 'positive', 'negative', 'negative', 'positive']
}
df = pd.DataFrame(data)
  1. 生成所有需要的虚拟列名并初始化为0
# 生成主题1-5与pos/neg的组合列名
topics = range(1, 6)
sentiments = ['pos', 'neg']
dummy_columns = [f'T{t}{s}' for t in topics for s in sentiments]

# 为DataFrame添加这些列,默认值设为0
for col in dummy_columns:
    df[col] = 0
  1. 遍历每行数据,根据topic和label设置对应列的值为1
for idx, row in df.iterrows():
    current_topic = row['topic']
    current_label = row['label']
    # 未分配主题(topic=0)时跳过赋值
    if current_topic == 0:
        continue
    # 转换情感为缩写
    sentiment_short = 'pos' if current_label == 'positive' else 'neg'
    # 定位目标列并设为1
    target_col = f'T{current_topic}{sentiment_short}'
    df.loc[idx, target_col] = 1

方法二:利用get_dummies(高效适合大数据)

如果你的数据集较大,推荐使用这种更高效的向量化方法:

import pandas as pd

data = {
    'reviewId': ['01', '02', '03', '04', '05'],
    'topic': [2, 2, 0, 5, 1],
    'label': ['negative', 'positive', 'negative', 'negative', 'positive']
}
df = pd.DataFrame(data)

# 生成主题-情感组合列(未分配主题时设为空字符串)
df['temp_comb'] = df.apply(
    lambda x: f'T{x["topic"]}{"pos" if x["label"]=="positive" else "neg"}' 
    if x['topic'] != 0 else '', 
    axis=1
)

# 生成哑变量
dummies = pd.get_dummies(df['temp_comb'], prefix='', prefix_sep='')

# 补全所有需要的虚拟列,缺失的列设为0
dummy_columns = [f'T{t}{s}' for t in range(1,6) for s in ['pos','neg']]
for col in dummy_columns:
    if col not in dummies.columns:
        dummies[col] = 0

# 合并原数据与哑变量,删除临时列
df = pd.concat([df, dummies[dummy_columns]], axis=1).drop('temp_comb', axis=1)

执行上述任一方法后,你的DataFrame就会转换成目标格式,其中topic=0的行所有虚拟列均为0,完全符合需求。

内容的提问来源于stack exchange,提问作者Dewani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:15:31