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

如何从列表提取关键词,并为每个关键词创建独立数据列?

提取列表元素并创建独立美食列(Python Pandas实现)

假设你用Pandas处理数据,以下是具体操作步骤:

1. 准备示例数据

先构造模拟数据(替换成你的真实DataFrame即可):

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2],
    'cuisine': [['Hot Pot', 'Korean BBQ', 'BBQ', 'Korean'], ['Desserts', 'Modern Australian']]
})

2. 获取所有唯一美食类型

先把列表展开,再提取不重复的美食名称:

unique_cuisines = df['cuisine'].explode().unique()

3. 为每个美食创建独立列

有两种常用方法:

方法一:循环判断(直观易懂)

遍历每个唯一美食,给每行标记是否包含该美食(1=包含,0=不包含):

for cuisine in unique_cuisines:
    df[cuisine] = df['cuisine'].apply(lambda x: 1 if cuisine in x else 0)

方法二:向量化操作(高效处理大数据)

通过展开列表、生成哑变量,再按原行索引聚合求和,效率更高:

# 展开列表并生成哑变量,再按原行号分组求和
cuisine_dummies = df['cuisine'].explode().str.get_dummies().groupby(level=0).sum()
# 将哑变量列合并到原DataFrame
df = df.join(cuisine_dummies)

补充处理:避免重复值导致的计数异常

如果某行的cuisine列表存在重复元素,求和后可能出现大于1的值,可通过clip(0,1)确保列值只有0或1:

cuisine_dummies = df['cuisine'].explode().str.get_dummies().groupby(level=0).sum().clip(0,1)

最终效果

处理后的DataFrame会新增Hot Pot、Korean BBQ、BBQ、Korean、Desserts、Modern Australian等列,每行对应位置为1表示该行包含该美食,0则不包含。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:25:13