我想从用户名中提取首字母,然后用首字母替换名称
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])
的首字母列表。