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

如何将PySpark中值为字符串的add_info列解析为多列

解析表格中add_info列并拆分出对应字段

输入表格

idnameadd_info
1MessiClub: PSG, Age: 35, birthplace: Arg
2RonaldoClub: Al-Nasr, Age: 38, birthplace: Portg
3XaviClub: Barcelona, Age: 43, birthplace: Spain

目标输出表格

idnameadd_infoClubAgebirthplace
1MessiClub: PSG, Age: 35, birthplace: ArgPSG35Arg
2RonaldoClub: Al-Nasr, Age: 38, birthplace: PortgAl-Nasr38Portg
3XaviClub: Barcelona, Age: 43, birthplace: SpainBarcelona43Spain

下面提供两种实用的实现方法,以Python pandas为例(处理表格数据的常用工具):

方法一:正则表达式直接提取(高效简洁)

利用str.extract方法结合正则,一次性捕获所有需要的字段,直接生成新列:

import pandas as pd

# 构造输入DataFrame
data = {
    'id': [1, 2, 3],
    'name': ['Messi', 'Ronaldo', 'Xavi'],
    'add_info': [
        'Club: PSG, Age: 35, birthplace: Arg',
        'Club: Al-Nasr, Age: 38, birthplace: Portg',
        'Club: Barcelona, Age: 43, birthplace: Spain'
    ]
}
df = pd.DataFrame(data)

# 正则匹配捕获字段值,括号内是要提取的内容
extracted_cols = df['add_info'].str.extract(r'Club: (\w+), Age: (\d+), birthplace: (\w+)')
# 给提取的列命名
extracted_cols.columns = ['Club', 'Age', 'birthplace']

# 合并原表格和新提取的列
result_df = pd.concat([df, extracted_cols], axis=1)
# 可选:将Age转为整数类型
result_df['Age'] = result_df['Age'].astype(int)

print(result_df)

方法二:拆分字符串转字典再展开(灵活适配格式变化)

如果add_info内的字段顺序可能变动,这种方法更灵活:

import pandas as pd

data = {
    'id': [1, 2, 3],
    'name': ['Messi', 'Ronaldo', 'Xavi'],
    'add_info': [
        'Club: PSG, Age: 35, birthplace: Arg',
        'Club: Al-Nasr, Age: 38, birthplace: Portg',
        'Club: Barcelona, Age: 43, birthplace: Spain'
    ]
}
df = pd.DataFrame(data)

# 定义解析函数,将add_info转为键值对Series
def parse_info(info_str):
    # 先按", "拆分每个字段,再按": "拆分键和值
    info_dict = {}
    for item in info_str.split(', '):
        key, val = item.split(': ')
        info_dict[key] = val
    return pd.Series(info_dict)

# 应用函数提取所有字段
extracted_cols = df['add_info'].apply(parse_info)
# 合并表格
result_df = pd.concat([df, extracted_cols], axis=1)

print(result_df)

两种方法都能得到你需要的表格结构,方法一适合格式固定的场景,执行速度更快;方法二对字段顺序的兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 13:13:14