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

如何用Pandas处理DataFrame中含省略号的range列并展开数值范围?

解决Pandas DataFrame范围值展开问题

步骤1:创建示例DataFrame

首先我们先还原题目中的输入数据:

import pandas as pd

data = {
    'Type': ['Mike', 'Ni', 'NANA', 'Gi'],
    'range': ['10..13', '3..4', '2...3', '2']
}
df = pd.DataFrame(data)

步骤2:拆分范围值并处理边界

使用正则表达式拆分range列,同时处理单值的情况:

# 按任意数量的点拆分,生成start和end列
df[['start', 'end']] = df['range'].str.split(r'\.+', expand=True)

# 转换为整数类型,单值行的end填充为start的值
df['start'] = df['start'].astype(int)
df['end'] = df['end'].fillna(df['start']).astype(int)

步骤3:生成展开后的数值列表

为每行生成包含完整范围的数值列表:

# 生成从start到end(包含)的整数列表
df['expanded_range'] = df.apply(lambda row: list(range(row['start'], row['end'] + 1)), axis=1)

步骤4:展开列表为多行

使用explode方法将列表拆分为独立行,并清理多余列:

# 展开列表并整理列名
result = df.explode('expanded_range').drop(columns=['range', 'start', 'end'])
result = result.rename(columns={'expanded_range': 'range'})

# 重置索引(可选)
result = result.reset_index(drop=True)

最终结果

运行上述代码后,result即为所需的展开后DataFrame:

Type  range
0   Mike     10
1   Mike     11
2   Mike     12
3   Mike     13
4     Ni      3
5     Ni      4
6   NANA      2
7   NANA      3
8     Gi      2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:36:01