使用Pandas拆分full_name列:多词姓氏完整捕获问题求助
解决Pandas拆分姓名为名字和复合姓氏的问题
直接用str.split()的n参数限制拆分次数,就能把第一个词作为名字,剩余所有内容完整捕获为姓氏:
# 拆分full_name,仅在第一个空格处分割,展开为两列 df[['first_name', 'last_name']] = df['full_name'].str.split(n=1, expand=True)
原理说明
n=1表示只执行一次拆分,也就是从第一个空格处把字符串分成两部分,不会拆分后续的空格,完美适配"mary van der smith"这类带复合姓氏的格式expand=True会把拆分后的列表直接转换成DataFrame的两列,自动对应到first_name和last_name列中
处理边界情况
如果遇到只有单个词的姓名(比如"Obama"),拆分后last_name会是NaN,可以按需填充:
# 把单个词的姓名同时赋值给姓氏列 df['last_name'] = df['last_name'].fillna(df['first_name'])
内容的提问来源于stack exchange,提问作者user24012259
相关产品推荐
相关产品推荐

