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

Python中如何拆分DataFrame含多值的列并转为行值?

如何将DataFrame中的多值列拆分为多行(Python新手友好版)

嘿,作为Python新手遇到这个拆分DataFrame列的问题完全正常,别担心,用pandas的两个简单函数就能轻松搞定!下面我一步步给你讲清楚:

第一步:准备环境和示例数据

首先你得确保已经安装了pandas(如果没装的话,在终端里跑pip install pandas就行),然后导入库并创建和你描述一致的示例DataFrame:

import pandas as pd

# 构造你给出的示例数据
data = {
    'col_name': ['UO1', 'UO1,UO2,UO3', 'UO1,UO2,UO3,UO4,UO5', 'UO1,SO1,SO3', 'SO3,UO1']
}
df = pd.DataFrame(data)

运行这段代码后,你就得到了和你描述一样的DataFrame,接下来就是拆分步骤。

第二步:拆分多值列并展开成行

这里用到两个关键函数:

  • str.split(','):把列中的字符串按逗号,拆分成列表(比如'UO1,UO2'会变成['UO1', 'UO2'])
  • explode():把列表中的每个元素单独拆成一行,同时保留对应行的索引关系

具体代码如下:

# 先拆分列,再展开成行
df_split = df['col_name'].str.split(',').explode()

# 如果想保留标准的DataFrame结构,可以转成带列名的DataFrame
df_split = df_split.to_frame(name='col_name')

运行完这段代码,你就能看到原来的多值单元格都被拆成了单独的行,比如原来的'UO1,UO2,UO3'会变成三行,每行分别是UO1、UO2、UO3。

完整可运行代码

把上面的步骤整合起来,直接复制就能运行:

import pandas as pd

# 创建示例数据
data = {
    'col_name': ['UO1', 'UO1,UO2,UO3', 'UO1,UO2,UO3,UO4,UO5', 'UO1,SO1,SO3', 'SO3,UO1']
}
df = pd.DataFrame(data)

# 拆分并展开
df_split = df['col_name'].str.split(',').explode().to_frame(name='col_name')

# 查看结果
print(df_split)

运行后你会得到这样的输出:

col_name
0      UO1
1      UO1
1      UO2
1      UO3
2      UO1
2      UO2
2      UO3
2      UO4
2      UO5
3      UO1
3      SO1
3      SO3
4      SO3
4      UO1

这样就完美实现了你要的效果,是不是很简单?如果之后遇到其他DataFrame的问题,随时再来问!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:29:15