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

如何将Pandas DataFrame单列拆分为多列(元素数量不固定)

解决办法:拆分逗号分隔列并补全缺失值

嘿,这个需求很常见,我来给你写个清晰的解决方案!咱们用Pandas就能轻松搞定,步骤简洁易懂。

完整代码示例

假设你的DataFrame已经准备好,直接运行下面的代码即可:

import pandas as pd

# 模拟你的原始DataFrame
data = {
    'ColumnA': ['usr', 'xyz', 'abc'],
    'ColumnB': ['usr1,usr2', 'xyz1,xyz2,xyz3', 'abc1,abc2,abc3'],
    'ColumnC': ['X1', 'X2', 'X3']
}
df = pd.DataFrame(data)

# 1. 拆分ColumnB列,每个拆分元素生成独立列
split_cols = df['ColumnB'].str.split(',', expand=True)

# 2. 给拆分后的列统一命名为usercol1、usercol2...
split_cols.columns = [f'usercol{i+1}' for i in split_cols.columns]

# 3. 把空值替换成'-',处理元素数量不足的情况
split_cols = split_cols.fillna('-')

# 4. 合并原数据与拆分列,调整成你要的列顺序
result_df = pd.concat([df, split_cols], axis=1)
final_column_order = ['ColumnA', 'ColumnB'] + list(split_cols.columns) + ['ColumnC']
result_df = result_df[final_column_order]

print(result_df)

运行结果

输出完全符合你的期望:

ColumnAColumnBusercol1usercol2usercol3ColumnC
0usrusr1,usr2usr1usr2-X1
1xyzxyz1,xyz2,xyz3xyz1xyz2xyz3X2
2abcabc1,abc2,abc3abc1abc2abc3X3

代码逻辑说明

  • str.split(',', expand=True):把ColumnB里的逗号分隔字符串拆成多列,哪怕有6个元素也会自动生成6个usercol列,完全适配元素数量不固定的场景。
  • 列重命名:用列表推导式给拆分后的列统一命名,避免默认的数字列名,更直观。
  • fillna('-'):把拆分后缺失的单元格(比如usr只有两个元素,第三个位置为空)替换成'-',完美补全缺省值。
  • 合并与列序调整:横向合并原数据和拆分列后,按照你指定的顺序重新排列列,确保输出结构和你要的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:37:34