You need to enable JavaScript to run this app. pandas中如何将特定文本列提取的分词作为新数据框的列标签
优惠活动
大模型
产品
解决方案
定价
更多

pandas中如何将特定文本列提取的分词作为新数据框的列标签

实现词存在性特征矩阵的调整方法

你的代码只差一步就能实现目标:把特征矩阵转成DataFrame时,将之前统计得到的分词列表指定为列名,替换掉默认的数字索引列名。

具体修改点

  • 保留原有分词统计逻辑,拿到存储所有分词的列表df_word_count
  • 将生成的全零矩阵转成DataFrame时,新增columns参数绑定分词列表:
    原拼接代码:
    Complete_data=pd.concat([df,pd.DataFrame(allfeatures)],axis=1)
    
    修改为:
    # 给特征矩阵的每一列绑定对应分词列名
    feature_df = pd.DataFrame(allfeatures, columns=df_word_count)
    # 再执行和原数据框的拼接
    Complete_data=pd.concat([df, feature_df], axis=1)
    
  • 可以顺带修正原有循环的逻辑偏差:原循环中用split().count()统计的是词在单一行的出现次数,不是要求的“存在即标记1”的二值结果,如果同一行出现重复分词,会出现大于1的数值。把循环内的赋值行调整为二值判断即可:
    原循环赋值:
    allfeatures[:,i]=df['A'].agg(lambda x:x.split().count(df_word_count[i]))
    
    修改为:
    allfeatures[:,i] = df['A'].apply(lambda x: 1 if df_word_count[i] in x.split() else 0)
    

简化实现方案

不需要手动初始化全零矩阵、写循环遍历的话,可以直接用字典推导式一步生成二值特征矩阵,代码更简洁:

# 复用之前统计得到的分词列表
vocab = df_word_count
# 逐词判断每一行的文本中是否存在该词,生成二值特征
feature_df = pd.DataFrame({
    word: df['A'].apply(lambda row_text: 1 if word in row_text.split() else 0)
    for word in vocab
})
# 拼接原数据框,得到最终结果
Complete_data = pd.concat([df, feature_df], axis=1)

运行上述代码后,新增的特征列会直接以分词本身作为列名,完全匹配你期望的输出结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 21:45:09