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

如何将DataFrame中含空格分隔值的行拆分为多行(仅修改目标列)

拆分DataFrame指定列为多行,其余列保持不变

嘿,这个需求我之前做数据清洗的时候经常碰到,用Pandas就能轻松解决,给你两种实用的方法,看哪种更适合你的场景:

方法一:str.split() + explode()(简洁高效,推荐)

这是Pandas 0.25+版本就支持的原生方法,代码量少,逻辑清晰,处理大多数场景都够用。

步骤:

  • 用str.split()把目标列(比如U.N.Region)按空格拆分成列表格式;
  • 用explode()把列表中的每个元素拆成单独一行,其他列的值会自动复制对应到每一行。

代码示例:

先创建一个模拟的DataFrame:

import pandas as pd

# 示例数据
df = pd.DataFrame({
    'U.N.Region': ['North West', 'South East', 'Central'],
    'Country': ['UK', 'India', 'Nigeria'],
    'Population': [67000000, 1400000000, 220000000]
})

然后执行拆分操作:

# 1. 将目标列按空格拆分为列表
df['U.N.Region'] = df['U.N.Region'].str.split(' ')
# 2. 拆分列表为多行,重置索引
result_df = df.explode('U.N.Region', ignore_index=True)

输出结果:

U.N.Region Country  Population
0       North      UK    67000000
1       West      UK    67000000
2       South    India  1400000000
3       East    India  1400000000
4     Central  Nigeria   220000000

方法二:apply() + stack()(灵活适配复杂场景)

如果你的数据有特殊情况(比如目标列存在空值、分隔符不固定,或者需要同时处理多列),可以用这种方法,灵活性更高。

代码示例:

result_df = df.set_index(['Country', 'Population'])['U.N.Region'] \
              .str.split(' ', expand=True)  # 拆分后展开为多列
              .stack()  # 将列转为行,形成多级索引
              .reset_index(name='U.N.Region')  # 重置索引并重命名目标列
              .drop('level_2', axis=1)  # 删除多余的层级索引列

这个方法的核心是先把不需要拆分的列设为索引,避免拆分时重复复制,再通过stack()把拆分后的列转成行,最后恢复索引结构。

注意事项:

  • 如果目标列存在空值,explode()默认会保留空行,要是想过滤掉,可以在最后加.dropna(subset=['U.N.Region']);
  • 如果分隔符不是空格,把str.split()里的参数改成对应的即可,比如逗号分隔就用str.split(', ');
  • 要是需要同时拆分多列,方法一也支持,只需要把explode()的参数改成列名列表,比如explode(['Col1', 'Col2'])。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:46:04