基于Pandas现有列创建新列:为ID添加user/前缀并去引号
Pandas DataFrame生成col4列的实现方案
需求说明
基于现有DataFrame的col3列生成col4列,需完成两个处理:
- 移除
col3中的双引号 - 给每个ID添加
user/前缀,支持单个ID或逗号分隔的ID列表
实现代码
1. 构造示例数据
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame({ 'col1': ['01', '02'], 'col2': ['01', '02'], 'col3': ['"ID278, ID289"', '"ID275"'] })
2. 方法一:正则表达式批量处理
利用字符串替换和正则匹配,一次性完成去引号和前缀添加:
# 生成col4列 df['col4'] = df['col3'].str.replace('"', '', regex=False) \ .str.replace(r'\bID', r'user/ID', regex=True)
str.replace('"', '', regex=False):直接移除所有双引号str.replace(r'\bID', r'user/ID', regex=True):通过单词边界\b匹配每个独立的ID开头,替换为带前缀的格式
3. 方法二:拆分-处理-合并(更灵活)
适合ID前后存在不规则空格的场景,先拆分ID列表,逐个添加前缀后再合并:
df['col4'] = df['col3'].str.replace('"', '', regex=False) \ .apply(lambda x: ', '.join([f'user/{id.strip()}' for id in x.split(',')]))
x.split(','):按逗号拆分ID列表id.strip():去除ID前后的空格f'user/{id.strip()}':给每个ID添加前缀', '.join(...):将处理后的ID重新合并为字符串
处理后结果
执行代码后,DataFrame将变为:
col1 col2 col3 col4 0 01 01 "ID278, ID289" user/ID278, user/ID289 1 02 02 "ID275" user/ID275
内容的提问来源于stack exchange,提问作者youtube
相关产品推荐
相关产品推荐

