如何将PySpark中值为字符串的add_info列解析为多列
解析表格中add_info列并拆分出对应字段
输入表格
| id | name | add_info |
|---|---|---|
| 1 | Messi | Club: PSG, Age: 35, birthplace: Arg |
| 2 | Ronaldo | Club: Al-Nasr, Age: 38, birthplace: Portg |
| 3 | Xavi | Club: Barcelona, Age: 43, birthplace: Spain |
目标输出表格
| id | name | add_info | Club | Age | birthplace |
|---|---|---|---|---|---|
| 1 | Messi | Club: PSG, Age: 35, birthplace: Arg | PSG | 35 | Arg |
| 2 | Ronaldo | Club: Al-Nasr, Age: 38, birthplace: Portg | Al-Nasr | 38 | Portg |
| 3 | Xavi | Club: Barcelona, Age: 43, birthplace: Spain | Barcelona | 43 | Spain |
下面提供两种实用的实现方法,以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
相关产品推荐
相关产品推荐

