首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DataFrame中从名字中提取首字母

问如何在DataFrame中从名字中提取首字母
EN

Stack Overflow用户
提问于 2019-09-10 10:15:01
回答 4查看 1K关注 0票数 4

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

代码语言:javascript
复制
s = pd.DataFrame(['Robert Flitz', 'Hans Malek', 'Marek J. Beer'])

当我尝试使用这个函数时

代码语言:javascript
复制
def initials(name):
    init = ""
    for n in name.str.split():
        for i in n:
            init+=i[0]
    return init

它返回单个字符串。

代码语言:javascript
复制
initials(s[0])
'RFHMMJB'

我想看上去像

代码语言:javascript
复制
'RF'
'HM'
'MJB'

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-09-10 10:47:41

还可以使用正则表达式:

代码语言:javascript
复制
s[0].str.replace('[^A-Z]', '')
0     RF
1     HM
2    MJB
票数 4
EN

Stack Overflow用户

发布于 2019-09-10 10:23:01

代码语言:javascript
复制
s[0].apply(lambda x: ''.join(i[0] for i in x.split()))

输出:

代码语言:javascript
复制
0    RF
1    HM
2    MJB
Name: 0, dtype: object

更改numpy数组

代码语言:javascript
复制
np.array(s[0].apply(lambda x: ''.join(i[0] for i in x.split())))

输出:

代码语言:javascript
复制
array(['RF', 'HM', 'MJB'], dtype=object)
票数 1
EN

Stack Overflow用户

发布于 2019-09-10 10:28:38

您可以编辑您的首字母函数。在内部循环结束后向init变量追加一条新行。

代码语言:javascript
复制
def initials(name):
    init = ""
    for n in name.str.split():
        for i in n:
            init+=i[0]
        init+= "\n"
    return init
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57868623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档