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

如何在Python中基于文本列含指定列表至少两词创建哑变量?

问题描述

需要为DataFrame创建一个哑变量innovation,满足以下条件:当lemmatised列中至少包含自定义列表innovation_words里的两个单词时,innovation设为1,否则设为0。

自定义单词列表:

innovation_words = ['community', 'local', 'charity', 'event', 'partner',
                'volunteering', 'plastic', 'surplusfood']

lemmatised列每行是多个单词的集合(如列表形式)。

尝试过的无效代码:

conditions = [df_posts['lemmatised'].isin(innovation_words), 
          df_posts['lemmatised'].isin(innovation_words)]

dummy = [1,0]

df_posts['innovation'] = np.select(conditions, dummy)
解决方案

原代码的问题在于isin()只能判断元素是否属于列表中的单个值,无法统计匹配单词的数量。可以按以下步骤实现需求:

步骤1:统一lemmatised列格式

如果列内容是空格分隔的字符串,先转换为单词列表:

# 若列是字符串格式,分割为单词列表
df_posts['lemmatised'] = df_posts['lemmatised'].str.split()

步骤2:统计每行匹配的单词数量

将自定义列表转为集合提升匹配效率,再用apply()结合集合交集统计匹配数:

innovation_set = set(innovation_words)

# 计算每行与目标列表的匹配单词数量
df_posts['match_count'] = df_posts['lemmatised'].apply(
    lambda x: len(set(x) & innovation_set)
)

步骤3:生成目标哑变量

根据匹配数量是否≥2赋值:

import numpy as np

df_posts['innovation'] = np.where(df_posts['match_count'] >= 2, 1, 0)

# 可选:删除中间统计列
# df_posts.drop('match_count', axis=1, inplace=True)

完整示例代码

import pandas as pd
import numpy as np

# 构造示例数据
data = {
    'lemmatised': [
        ['local', 'plastic', 'shop'],
        ['community'],
        ['charity', 'event', 'volunteering'],
        ['surplusfood', 'partner']
    ]
}
df_posts = pd.DataFrame(data)

innovation_words = ['community', 'local', 'charity', 'event', 'partner',
                'volunteering', 'plastic', 'surplusfood']
innovation_set = set(innovation_words)

# 统计匹配数
df_posts['match_count'] = df_posts['lemmatised'].apply(lambda x: len(set(x) & innovation_set))

# 生成哑变量
df_posts['innovation'] = np.where(df_posts['match_count'] >= 2, 1, 0)

print(df_posts)

运行输出:

lemmatised  match_count  innovation
0       [local, plastic, shop]            2           1
1                [community]            1           0
2  [charity, event, volunteering]            3           1
3        [surplusfood, partner]            2           1

内容的提问来源于stack exchange,提问作者Hans.nl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:50:23