[英]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.