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

如何基于Pandas DataFrame的Comments列创建DOB与POB新列

解决方案

可以通过Pandas的字符串提取方法结合条件赋值来实现需求,步骤清晰且易理解:

import pandas as pd
import numpy as np

# 初始化原始DataFrame
ds1 = {'Name':["Juan Pablo Montoya","Jose Hiero","Martin Vasquez"], "Comments" : ["DOB 18 May 1967; POB Mexico.","POB Mexico.","-0-"]}
df1 = pd.DataFrame(data=ds1)

# 1. 提取DOB列:匹配"DOB"后到分号前的内容
df1['DOB'] = df1['Comments'].str.extract(r'DOB\s*(.*?);', expand=False)

# 2. 提取POB列:匹配"POB"后到句号前的内容
df1['POB'] = df1['Comments'].str.extract(r'POB\s*(.*?)\.', expand=False)

# 3. 处理Comments为"-0-"的情况,将对应行的DOB和POB设为NaN
mask = df1['Comments'] == '-0-'
df1.loc[mask, ['DOB', 'POB']] = np.nan

# 查看结果
print(df1)

执行后输出的目标DataFrame:

Name                      Comments         DOB     POB
0  Juan Pablo Montoya  DOB 18 May 1967; POB Mexico.  18 May 1967  Mexico
1          Jose Hiero                   POB Mexico.         NaN  Mexico
2      Martin Vasquez                           -0-         NaN     NaN

代码说明

  • 提取DOB:正则表达式r'DOB\s*(.*?);中,\s*匹配任意数量的空格,(.*?)是非贪婪匹配,捕获DOB后到分号前的所有内容;没有匹配到的行自动填充NaN。
  • 提取POB:正则表达式r'POB\s*(.*?)\.'捕获POB后到句号前的内容,同样无匹配时填充NaN。
  • 处理"-0-"行:通过布尔掩码定位符合条件的行,直接将对应列值设为NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:38:21