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

如何为列表中的每个值在Pandas DataFrame中创建对应列?

问题分析

你的代码存在两个关键问题:

  1. 流派列表生成逻辑错误:判断genre not in genre_list时,genre是字符串类型,而你追加到列表里的是genre.split('|')得到的列表,两者类型不匹配,永远不会触发重复判断,最终genre_list会变成嵌套的重复流派列表,无法得到干净的唯一流派集合。
  2. 列名赋值错误:循环里写goodreads_cl['x'] = ''时,'x'是固定字符串,不是变量x的实际取值,所以每次循环都在覆盖同一列,最终只会生成名为x的单一列。
修正方案

步骤1:正确提取所有唯一流派

先拆分genre列并展开所有流派值,再去重得到纯净的流派列表:

# 拆分genre列、展开所有流派、去重后转为列表
genre_list = goodreads_cl['genre'].str.split('|').explode().unique().tolist()

步骤2:为每个流派创建对应列

遍历流派列表,为每个流派生成专属列,标记该行是否包含该流派(可选择用1/0或空字符串标记):

# 为每个流派创建列,用1表示包含该流派,0表示不包含
for genre in genre_list:
    goodreads_cl[genre] = goodreads_cl['genre'].str.contains(genre).astype(int)

# 若想用空字符串标记不包含的情况,可替换为:
# goodreads_cl[genre] = goodreads_cl['genre'].apply(lambda x: genre if genre in x.split('|') else '')

完整修正代码

# 提取所有唯一流派
genre_list = goodreads_cl['genre'].str.split('|').explode().unique().tolist()

# 生成每个流派的对应列
for genre in genre_list:
    goodreads_cl[genre] = goodreads_cl['genre'].str.contains(genre).astype(int)

goodreads_cl.head()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:40:32