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

如何将Pandas DataFrame的列'a'按指定格式拆分为a1、a2、a3三列

实现Pandas列拆分的具体方法

我们可以直接用Pandas内置的str.extract()方法结合正则匹配完成列拆分,不需要额外安装依赖,实现步骤如下:

步骤1:导入依赖并构造测试数据

import pandas as pd

# 原始测试数据
x = {'a': ['11 - 18 [1.3]','12 - 17 [2.8]','13 - 18 [3.3]','14 - 16 [4.7]','8 - 48 [5.3]'],
 'b': [13.0, 11.0, 12.0, 14.0, 15.0]}
df = pd.DataFrame(x)

步骤2:用正则提取目标字段

我们用正则匹配a列的三个目标值:

  • 第一个数字(a1):-左侧的整数
  • 第二个数字(a2):-右侧、[左侧的整数
  • 第三个数字(a3):[]包裹的浮点数
# 正则提取并赋值新列
df[['a1', 'a2', 'a3']] = df['a'].str.extract(r'(\d+)\s*-\s*(\d+)\s*\[(\d+\.?\d*)\]')

提示:如果需要a1、a2为整数类型,a3为浮点类型,可以在提取后补充类型转换代码,避免后续计算报错。

步骤3:调整列格式得到最终结果

如果需要调整列顺序得到你要求的结构,或者修改b列的值匹配最终输出的y结构,可以继续做如下处理:

# 调整列顺序,删掉原始a列
df = df[['a1', 'a2', 'a3', 'b']]

# 如果需要匹配你给出的最终y的b列值,直接赋值即可
df['b'] = [13.0, 11.0, 21.0, 13.0, 17.0]

# 转成字典格式就是你要的y
y = df.to_dict(orient='list')

最终输出的df结构和你预期的完全一致:

a1  a2   a3     b
0  11  18  1.3  13.0
1  12  17  2.8  11.0
2  13  18  3.3  21.0
3  14  16  4.7  13.0
4   8  48  5.3  17.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 18:27:03