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

如何检测Pandas DataFrame中以name开头的列并拆分生成age列

解决Pandas提取name列后缀数字生成age列的问题

原始数据与需求

首先定义目标DataFrame:

import pandas as pd

df = pd.read_json('{"id":{"0":"21 Delta","1":"38 Bravo","2":"Charlie 37","3":"Alpha 56"},"name_1":{"0":"Tom","1":"Nick","2":"Chris","3":"David 56"},"name_2":{"0":"Peter 17","1":"Emma 53","2":"Jeff 11","3":"Oscar"},"name_3":{"0":"Jeffrey","1":"Olivier 12","2":null,"3":null},"name_4":{"0":"Henry 23","1":null,"2":null,"3":null}}')

原始输出:

id    name_1    name_2     name_3     name_4
0   21 Delta       Tom  Peter 17    Jeffrey  Henry 23
1   38 Bravo      Nick   Emma 53  Olivier 12      None
2  Charlie 37     Chris   Jeff 11       None      None
3   Alpha 56  David 56     Oscar       None      None

需求:遍历所有列,筛选列名以name开头的列,提取每行内容中空格后的数字,生成对应命名为age_1、age_2的新列。

现有代码问题

你写的代码仅计算了提取结果,但未将结果赋值到DataFrame的新列中,也没有建立name_x与age_x的对应命名逻辑:

for column in df.columns:
    if column.startswith("name"):
        age = df[column].str.split(" ").str.get(1)

修正后的代码

for column in df.columns:
    if column.startswith("name"):
        # 生成对应age列名
        age_col_name = column.replace("name", "age")
        # 提取空格后的数字并赋值到新列
        df[age_col_name] = df[column].str.split(" ").str.get(1)

运行后得到目标结果:

id    name_1    name_2     name_3     name_4 age_1 age_2 age_3 age_4
0   21 Delta       Tom  Peter 17    Jeffrey  Henry 23  None    17  None    23
1   38 Bravo      Nick   Emma 53  Olivier 12      None  None    53    12  None
2  Charlie 37     Chris   Jeff 11       None      None  None    11  None  None
3   Alpha 56  David 56     Oscar       None      None    56  None  None  None

关键说明

  • 用column.replace("name", "age")直接映射列名,确保name_x对应age_x的命名规则
  • str.split(" ").str.get(1)会自动处理无空格的内容(返回None),同时兼容原列的空值
  • 循环中直接将提取结果赋值给DataFrame的新列,完成添加操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:02