如何在Pandas DataFrame中提取'name='后的姓氏并存入数组
解决方案
没问题,这事儿用Pandas的字符串处理+正则表达式就能轻松搞定,我给你一步步实现:
1. 先构造示例DataFrame(模拟你的数据)
假设你的原始数据存在DataFrame的某一列(比如命名为text),先把示例数据搭起来:
import pandas as pd data = { 'text': [ '(ep1270399)\nname=stet, johannes cornelis p/a ballast nedam infra b.v., p.o. box 1526 , city=3430 bm nieuwegein , country=nl ', 'name=bos, wilhelmus johannes p/a ballast nedam infra b.v., p.o. box 1526 , city=3430 bm nieuwegein , country=nl ' ] } df = pd.DataFrame(data)
2. 提取name=后的姓氏
用str.extract配合正则表达式精准提取,正则的逻辑是:匹配name=后面直到第一个逗号的所有内容(刚好就是你要的姓氏):
# 提取姓氏到新列 df['last_name'] = df['text'].str.extract(r'(?<=name=)[^,]+') # 将结果转为数组 last_names_array = df['last_name'].values.tolist() print(last_names_array) # 输出结果: ['stet', 'bos']
正则表达式说明
(?<=name=):正向零宽断言,确保我们要匹配的内容前面刚好是name=,不会误匹配其他包含name的字符串[^,]+:匹配任意非逗号的字符,直到遇到第一个逗号为止,完美锁定姓氏部分
如果你的DataFrame列名不是text,只要把代码里的df['text']换成你的实际列名就行,兼容性很强~
内容的提问来源于stack exchange,提问作者Zikry Kickbuttowski
相关产品推荐
相关产品推荐

