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

如何用Pandas从stat列拆分生成range和stat两个新列?

拆分DataFrame的stat列生成新列

原始数据

location    stat            type    Q1 28   Q2 28   Q3 28   Q4 28   
NY          Low_Re_Num_De   AA      2       0       0       0   
NY          Low_Gr_Num_De   AA      2       2       2       6   
NY          Low_Re_Num_De   BB      0       0       0       0   
NY          Low_Gr_Num_De   BB      0       0       2       4   
NY          Low_Re_Num_De   DD      0       2       4       4   
NY          Low_Gr_Num_De   DD      2       2       4       8   
NY          Low_Re_Num_De   SS      0       0       0       0   
NY          Low_Gr_Num_De   SS      0       0       0       2   
CA          Med_Re_Num_De   AA      0       4       0       0   
CA          Med_Gr_Num_De   AA      2       0       0       0   
CA          Med_Re_Num_De   BB      0       2       0       0   
CA          Med_Gr_Num_De   BB      0       0       0       2   
CA          Med_Re_Num_De   DD      0       6       0       0   
CA          Med_Gr_Num_De   DD      2       0       0       0   
CA          Med_Re_Num_De   SS      0       2       0       0   
CA          Med_Gr_Num_De   SS      0       0       0       0

期望结果

location    range   stat    type    Q1 28   Q2 28   Q3 28   Q4 28
NY          Low     Re      AA      2       0       0       0
NY          Low     Gr      AA      2       2       2       6
NY          Low     Re      BB      0       0       0       0
NY          Low     Gr      BB      0       0       2       4
NY          Low     Re      DD      0       2       4       4
NY          Low     Gr      DD      2       2       4       8
NY          Low     Re      SS      0       0       0       0
NY          Low     Gr      SS      0       0       0       2
CA          Med     Re      AA      0       4       0       0
CA          Med     Gr      AA      2       0       0       0
CA          Med     Re      BB      0       2       0       0
CA          Med     Gr      BB      0       0       0       2
CA          Med     Re      DD      0       6       0       0
CA          Med     Gr      DD      2       0       0       0
CA          Med     Re      SS      0       2       0       0
CA          Med     Gr      SS      0       0       0       0

已实现的代码

已成功生成range列:

df['range'] = df['stat'].apply(lambda x: x.split('_')[0])

解决方案

要生成新的stat列,只需提取原stat字段拆分后的第二个元素,有两种实现方式:

方式一:延续原有apply逻辑

df['stat'] = df['stat'].apply(lambda x: x.split('_')[1])

方式二:更高效的批量拆分(推荐)

使用Pandas的str.split方法一次性拆分出所需列,比apply性能更优:

# 拆分原stat列,取前两部分分别赋值给range和新stat列
df[['range', 'stat']] = df['stat'].str.split('_', n=2, expand=True).iloc[:, [0, 1]]
  • n=2:限制拆分次数,仅拆分出前两个分隔符的内容,忽略后续的Num_De
  • expand=True:将拆分结果转换为DataFrame
  • iloc[:, [0,1]]:选取拆分后的第0列(对应range)和第1列(对应新stat)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:47:01