如何使用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
相关产品推荐
相关产品推荐

