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

如何使用Pandas将DataFrame中某列的多值拆分为单独行?

如何使用Pandas将DataFrame中某列的多值拆分为单独行?

你现在遇到的应该是把DataFrame里某列的多值(比如逗号分隔的内容)拆成单独行的需求对吧?看你的示例数据,原来的Output列里是类似Doc, writeback这种多值组合,想要把每个值都对应原来的Category拆成独立行,这个场景挺常见的,我来帮你解决~

先说说你之前代码出错的原因:你写的auto_test_file.DataFrame(...)这里有问题,因为auto_test_file本身已经是一个DataFrame对象了,它并没有DataFrame()这个方法,所以才会抛出AttributeError: 'DataFrame' object has no attribute 'DataFrame'这个错误。

下面给你两种可行的解决方法,根据你的Pandas版本选就行:

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

这是Pandas后来新增的非常方便的方法,一步到位:

# 先把Output列按', '(逗号加空格)拆分成列表
auto_test_file['Output'] = auto_test_file['Output'].str.split(', ')
# 把列表中的每个元素拆成单独行,同时保留其他列的对应值
new_df = auto_test_file.explode('Output').reset_index(drop=True)

运行后就能得到你想要的结果,每个Output里的单独值都会对应原来的Category生成一行,最后reset_index(drop=True)是重置索引,让结果更规整。

方法二:用stack适配旧版本Pandas

如果你的Pandas版本比较旧,还没有explode方法,可以修正你原来的思路来实现:

# 将Category设为索引,拆分Output并展开为多列,再转成行
temp = auto_test_file.set_index('Category')['Output'].str.split(', ', expand=True).stack()
# 整理成最终的DataFrame格式
new_df = temp.reset_index(level=0).rename(columns={0: 'Output'})

这个方法是先把Category作为索引,把拆分后的Output内容展开成多列,再通过stack()把列转成行,最后调整索引和列名得到目标结果。

两种方法都能实现你想要的效果,比如用你的示例数据,最终输出会是:

CategoryOutput
CarDoc
Carwriteback
CarTrace
Cardataview

备注:内容来源于stack exchange,提问作者lostcoder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:49:08