如何提取DataFrame字符串列中指定内容并转为独立列?
实现方法
假设你使用Pandas处理DataFrame,可以通过字符串分割+字典转换的方式提取目标字段,具体步骤如下:
1. 准备示例数据(已有原始DataFrame可跳过)
import pandas as pd # 模拟你的原始DataFrame data = { 'val': [ "ID: abc\nName: John\nLast name: Johnson\nAge: 27", "ID: igb1\nName: Mike\nLast name: Jackson\nPosition: CEO\nAge: 42" ] } df = pd.DataFrame(data)
2. 定义字段提取函数
该函数将单个字符串按换行拆分,再把每行内容解析为键值对存入字典:
def parse_text(text): field_map = {} # 按换行符分割每行内容 for line in text.split('\n'): # 按": "分割键和值(限制分割次数为1,避免值中含冒号导致解析错误) if ': ' in line: key, val = line.split(': ', 1) # 去除键值前后的多余空格 field_map[key.strip()] = val.strip() return field_map
3. 提取字段并生成目标DataFrame
将函数应用到原始列,转换为结构化DataFrame后筛选目标字段:
# 提取所有字段生成新的结构化DataFrame extracted_data = df['val'].apply(parse_text).apply(pd.Series) # 筛选需要的Name、Position、Age列,缺失字段自动填充为NaN result_df = extracted_data[['Name', 'Position', 'Age']] # 可选:将Age列转换为数值类型 result_df['Age'] = pd.to_numeric(result_df['Age'])
最终结果
执行后result_df的输出如下:
Name Position Age 0 John NaN 27 1 Mike CEO 42
内容的提问来源于stack exchange,提问作者gh1222
相关产品推荐
相关产品推荐

