如何在Pandas中拆分含多词姓氏:提取名与姓
解决Pandas拆分姓名时姓的拼接问题
你的问题核心在于:str.split().str[1:]返回的是列表类型的值,而非字符串,所以直接用replace无法去除括号——括号是列表的打印格式,不是字符串里的字符。下面是可行的解决方案:
步骤1:修正DataFrame初始化
你最初的代码没有正确创建Pandas DataFrame,先调整这一步:
import pandas as pd # 用指定列名创建DataFrame df = pd.DataFrame( ['Victor De La Cruz', 'Ashley Smith', 'Angel Miguel Hernandez', 'Hank Hill'], columns=['full_name'] )
步骤2:正确拆分并拼接姓
提取名的逻辑没问题,但姓需要把拆分后的剩余元素用空格拼接成字符串,用str.join(' ')实现:
# 提取名(取拆分后的第一个元素) df['first_name'] = df['full_name'].str.split().str[0] # 提取姓(将拆分后的第2个及以后元素拼接为字符串) df['last_name'] = df['full_name'].str.split().str[1:].str.join(' ')
运行结果
执行后会得到你期望的格式:
full_name first_name last_name 0 Victor De La Cruz Victor De La Cruz 1 Ashley Smith Ashley Smith 2 Angel Miguel Hernandez Angel Miguel Hernandez 3 Hank Hill Hank Hill
为什么之前的replace无效?
df['full_name'].str.split().str[1:]返回的Series中,每个元素都是列表(比如['De', 'La', 'Cruz']),而replace('[', '')是针对字符串的操作,无法作用于列表对象。只有通过str.join(' ')把列表转为字符串后,才能得到无括号的连续文本。
内容的提问来源于stack exchange,提问作者Coding_Nubie
相关产品推荐
相关产品推荐

