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

如何使用Pandas从DataFrame现有列提取特定关键词生成二进制标记新列?

最优实现方法:两种高效方案任你选

嘿,作为Python新手刚接触Pandas遇到这类问题太正常啦!针对你要把关键词拆分成二进制标记列的需求,我给你分享两种最优实现方式,按需选择就行:

方案一:自动生成所有关键词列(推荐,可扩展性强)

如果你的「Sensory scores」列以后可能出现新的关键词,或者现在关键词数量较多,用str.get_dummies绝对是最高效的选择——它会自动识别所有关键词并生成对应二进制列,不用手动逐个定义:

首先先构建你的示例数据(方便你直接测试):

import pandas as pd

data = {
    'Treatment': ['A', 'B', 'C'],
    'Sensory scores': ['soft, short', 'soft, tender', 'short, tender']
}
df = pd.DataFrame(data)

然后执行核心代码:

# 拆分逗号分隔的关键词,生成二进制标记列
dummy_columns = df['Sensory scores'].str.get_dummies(sep=', ')

# 把新生成的列和原DataFrame合并
final_df = pd.concat([df, dummy_columns], axis=1)

运行后得到的final_df就是你想要的结果,而且如果以后有新的关键词(比如「crunchy」),这个代码会自动生成对应的列,完全不用修改逻辑~

方案二:手动定义每个关键词列(直观易懂,适合关键词少的场景)

如果你的关键词是固定的3个,不想自动生成,直接手动创建每一列也很清晰,用str.contains判断是否包含关键词,再转成整数(True→1,False→0):

import pandas as pd

data = {
    'Treatment': ['A', 'B', 'C'],
    'Sensory scores': ['soft, short', 'soft, tender', 'short, tender']
}
df = pd.DataFrame(data)

# 逐个创建二进制列
df['soft'] = df['Sensory scores'].str.contains('soft').astype(int)
df['short'] = df['Sensory scores'].str.contains('short').astype(int)
df['tender'] = df['Sensory scores'].str.contains('tender').astype(int)

小细节补充

如果你的数据里关键词有大小写混合的情况(比如「Soft」「SOFT」),可以给str.contains加个参数忽略大小写:

df['soft'] = df['Sensory scores'].str.contains('soft', case=False).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:38:10