簡體   English   中英

如何從DataFrame中的名稱中提取首字母

[英]How to extract initials from name in DataFrame

我想從用戶名中提取姓名首字母,然后用姓名首字母替換姓名

s = pd.DataFrame(['Robert Flitz', 'Hans Malek', 'Marek J. Beer'])

當我嘗試使用此功能

def initials(name):
    init = ""
    for n in name.str.split():
        for i in n:
            init+=i[0]
    return init

它返回單個字符串

initials(s[0])
'RFHMMJB'

我想看起來像

'RF'
'HM'
'MJB'

有任何想法嗎?

您還可以使用正則表達式:

s[0].str.replace('[^A-Z]', '')
0     RF
1     HM
2    MJB
s[0].apply(lambda x: ''.join(i[0] for i in x.split()))

輸出:

0    RF
1    HM
2    MJB
Name: 0, dtype: object

改變它numpy數組

np.array(s[0].apply(lambda x: ''.join(i[0] for i in x.split())))

輸出:

array(['RF', 'HM', 'MJB'], dtype=object)

您可以編輯首字母縮寫功能。 在內循環結束后向init變量追加一個新行。

def initials(name):
    init = ""
    for n in name.str.split():
        for i in n:
            init+=i[0]
        init+= "\n"
    return init

更多的pandas方法可能是:

def initials(name):
    init = ""
    for n in name.split():
        init+=n[0]
    return init
s[1] = s[0].apply(initials)

這給了:

               0    1
0   Robert Flitz   RF
1     Hans Malek   HM
2  Marek J. Beer  MJB

然后,如果您需要該格式,則可以使用list(s[1])獲取首字母list(s[1])

暫無
暫無

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

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