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

如何在Pandas中拆分DataFrame列并将每个值存为新行?

解决关键词拆分为新行并合并回原DataFrame的问题

我明白你想要的效果——把竖线分隔的关键词拆成单独的行,同时保留原DataFrame里的其他数据,方便后续用groupby做相关性分析对吧?你当前的代码是把拆分结果放到新列里,确实没达到预期。这里有几个实用的方法帮你实现需求:

方法一:使用explode(推荐,Pandas 0.25及以上版本支持)

这是最简洁高效的方式,Pandas专门为这种“把列表拆成多行”的场景提供了explode方法:

# 第一步:将竖线分隔的字符串转为列表
df['keywords'] = df['keywords'].str.split('|')
# 第二步:把列表中的每个元素拆成单独的行,自动保留原数据的其他列
df_exploded = df.explode('keywords')

举个例子,如果你的原DataFrame是这样:

indextitlekeywords
0Jurassic Parkmonster

执行完代码后,df_exploded会变成:

indextitlekeywords
0Jurassic Parkmonster
0Jurassic Parkdna
0Jurassic Parktyrannosaurus rex
0Jurassic Parkvelociraptor
0Jurassic Parkisland

完全符合你的需求,之后直接对df_exploded用groupby('keywords')就能做分析了。

方法二:使用stack(兼容旧版Pandas)

如果你用的是低于0.25版本的Pandas,没法用explode,可以用stack来实现:

# 拆分keywords列并转为堆叠格式
split_keywords = df['keywords'].str.split('|', expand=True).stack()
# 重置索引,去掉堆叠产生的多余层级,并重新命名列
split_keywords = split_keywords.reset_index(level=1, drop=True).rename('keywords')
# 合并回原DataFrame,去掉原来的keywords列
df_exploded = df.drop('keywords', axis=1).join(split_keywords)

这个方法的原理是先把拆分后的列转为行,再通过索引匹配合并回原数据,最终效果和方法一一致。

额外小提示

如果你的关键词里可能存在前后空格(比如monster | dna这种),可以在拆分的时候顺便清理:

df['keywords'] = df['keywords'].str.split('|').apply(lambda x: [k.strip() for k in x])

这样能避免后续分析时出现' monster'和'monster'被当成不同关键词的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:01:02