簡體   English   中英

刪除句點,然后將“@”后的 email 擴展名刪除到新列中以提取名字和姓氏信息

[英]Remove period then email extension after '@' into new column to extract first and last name information

我有一個格式為 firstname.lastname@email.com 的電子郵件列表。 我想創建一個新列,其中僅包含從 email 地址中提取的名字和姓氏。

我正在使用 PySpark。這是所需 output 的示例:

data = [{"Email": "john.doe@email.com", "Role": "manager"},
{"Email": "jane.doe@email.com", "Role": "vp"}]

df = spark.createDataFrame(data)

type(df)

# original data set
+------------------+-------+
|Email             |Role   |
+------------------+-------+
|john.doe@email.com|manager|
|jane.doe@email.com|vp     |
+------------------|-------+

# what I want the output to look like
+------------------+-------+--------+
|Email             |Role   |Name    |
+------------------+-------+--------+
|john.doe@email.com|manager|john doe|
|jane.doe@email.com|vp     |jane doe|
+------------------|-------|--------+

如何刪除句點,將其替換為空格,然后將 @ 之后的所有內容放入新列中以獲得如上例所示的名稱?

它將取代. @...有一個空間 我們必須從最后修剪。

from pyspark.sql import functions as F

df.withColumn('Name', F.trim(F.regexp_replace('Email', '\.|@.*', ' '))).show()
# +------------------+-------+--------+
# |             Email|   Role|    Name|
# +------------------+-------+--------+
# |john.doe@email.com|manager|john doe|
# |jane.doe@email.com|     vp|jane doe|
# +------------------+-------+--------+

您可以對字符串使用 Python 的.split方法,並使用循環將“名稱”字段添加到列表中的每條記錄。

for d in data:
    d["Name] = " ".join(d["Email"].split("@")[0].split("."))

在上面的循環中,我們在“@”字符處拆分“Email”字段,創建一個包含兩個元素的列表,其中我們取第一個,然后在字符“.”處拆分它,這給了我們第一個和姓。 然后我們用一個空格 (" ") 將它們連接起來。

您可以使用regex_extractregex_replace

from pyspark.sql import functions as F
df = df.withColumn('Name', F.regexp_extract(
        F.regexp_replace('Email', '\.', ' '), 
        '(.*)@', 
        1)
     )

首先, regexp_replace('Email', '\.', ' ')將替換. Email列中的空間。

然后, regexp_extract(..., '(.*)@', 1)將提取第一個捕獲組。

正則表達式解釋

(.*) => .* is any characters with any length. Wrap with () to make a capture group.
@ => match @ mark. 

(.*)@ => 1st Capture group will capture any characters before @.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM