如何从数据帧中的名称中提取首字母缩写



我想从用户名中提取首字母,然后用首字母替换名称

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])的首字母列表。

最新更新