程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何将全名拆分为姓和中间名

发布于2024-11-30 18:00     阅读(367)     评论(0)     点赞(28)     收藏(5)


输入

姓名
阿努巴夫·夏尔马
拉克什·库马尔·夏尔马
穆蒂亚·斯里尼瓦斯·阿塔帕图·穆利达兰

实际产量

中间名字
阿努巴夫 夏尔马
拉凯什 库马尔 夏尔马
穆蒂亚 斯里尼瓦斯 阿达帕图

预期输出

中间名字
阿努巴夫 夏尔马
拉凯什 库马尔 夏尔马
穆蒂亚 斯里尼瓦斯·阿塔帕图 穆利达兰
df = df.withColumn("arr", F.split(F.col("Name"), " "))
    
df = (df.withColumn('FirstName', F.arr.getItem(0))
        .withColumn('MiddleName', F.arr.getItem(1))
        .withColumn('LastName', F.arr.getItem(2)))


在此处输入图片描述

问题在于中间名,因为我的代码不正确


解决方案


您的代码中只考虑了 3 个部分的情况,而显然还有其他您没有处理的情况。您可以根据 aName可以拥有的部分数量实现以下逻辑:

name_schema = StructType([
    StructField("first_name", StringType(), True),
    StructField("middle_name", StringType(), True),
    StructField("last_name", StringType(), True)
])

@F.udf(returnType=name_schema)
def split_name(name):
    parts = name.split()
    if len(parts) == 1:
        return (parts[0], "", "")
    elif len(parts) == 2:
        return (parts[0], "", parts[1])
    elif len(parts) == 3:
        return (parts[0], parts[1], parts[2])
    else:
        return (parts[0], " ".join(parts[1:-1]), parts[-1])

# Apply the UDF to split names
df = df.withColumn("split_name", split_name("Name"))

df = df.withColumn("first_name", F.col("split_name.first_name")) \
       .withColumn("middle_name", F.col("split_name.middle_name")) \
       .withColumn("last_name", F.col("split_name.last_name")) \
       .drop("split_name")

输出:

+-------------------------------------+----------+-----------------+-----------+
|Name                                 |first_name|middle_name      |last_name  |
+-------------------------------------+----------+-----------------+-----------+
|Anubhav Sharma                       |Anubhav   |                 |Sharma     |
|Rakesh Kumar Sharma                  |Rakesh    |Kumar            |Sharma     |
|Muthiah Srinivas attapatu Murlidharan|Muthiah   |Srinivas attapatu|Murlidharan|
+-------------------------------------+----------+-----------------+-----------+


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2046399/b5e3bc9233914dc5a5b5/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

28 0
收藏该文
已收藏

评论内容:(最多支持255个字符)