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

如何基于列值对Pandas DataFrame执行explode展开操作

Pandas按区间字符串拆分多行实现方案

核心利用pandas原生explode方法实现,全程无需额外依赖,3行核心代码即可完成需求。

完整实现代码

import pandas as pd

# 1. 构造示例原始数据
df = pd.DataFrame([
    {"Location": "New York", "Number": 111, "Position": "1 through 12"},
    {"Location": "Dallas", "Number": 222, "Position": "1 through 12"},
    {"Location": "San Francisco", "Number": 333, "Position": "1 through 4"}
])

# 2. 处理Position列,将区间字符串转为区间内所有整数组成的序列
df["Position"] = df["Position"].apply(
    lambda s: range(
        int(s.split(" through ")[0]), 
        int(s.split(" through ")[1]) + 1  # range为左闭右开结构,结束值+1保证包含区间终点
    )
)

# 3. 执行explode拆分,自动保留其余列原值
df_result = df.explode("Position", ignore_index=True)

逻辑说明

  • 字符串拆分阶段:通过split(" through ")直接切割区间文本,拿到起始、结束数值,转成整数后用range()生成连续整数序列,不需要手动写循环生成列表
  • 拆分阶段:pandas原生explode方法会自动把列表/序列类型的列元素拆成独立行,Location、Number列的非序列值会自动在拆分后的新行中保留原值
  • ignore_index=True参数会直接为拆分后的结果生成从0开始的连续索引,不需要额外调用reset_index方法

结果验证

执行代码后返回的df_result共28行:

  • New York对应12行,Position取值1~12
  • Dallas对应12行,Position取值1~12
  • San Francisco对应4行,Position取值1~4
    完全匹配预期拆分效果,该方法兼容pandas 1.3.0及以上所有正式版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:39:42