繁体   English   中英

如何从Python的字符串中提取字符?

[英]How do I extract characters from a string in Python?

我需要使某些名称格式匹配,以便稍后在脚本中进行合并。 我的“名称”列是从csv导入的,包含如下名称:

安东尼奥·布朗

LeSean McCoy

勒冯贝尔

对于我的脚本,我想获取名字的第一个字母并将其与姓氏结合起来。

布朗

麦考伊

贝尔

这是我现在每次返回NaaN的内容:

ff['AbbrName'] = ff['Name'].str.extract('([AZ]\\s[a-zA-Z]+)', expand=True)

谢谢!

另一种使用str.replace方法和^([AZ]).*?([a-zA-Z]+)$ ^([AZ])捕获字符串开头的第一个字母; ([a-zA-Z]+)$匹配最后一个单词,然后通过添加来重建名称. 在第一个捕获组和第二个捕获组之间:

df['Name'].str.replace(r'^([A-Z]).*?([a-zA-Z]+)$', r'\1.\2')
#0    A.Brown
#1    L.McCoy
#2     L.Bell
#Name: Name, dtype: object

如果您只是apply()一个函数除以第一个空格并获得第一个单词的第一个字符加上其余的字符,该怎么办:

import pandas as pd


def abbreviate(row):
    first_word, rest = row['Name'].split(" ", 1)
    return first_word[0] + ". " + rest


df = pd.DataFrame({'Name': ['Antonio Brown', 'LeSean McCoy', "Le'Veon Bell"]})
df['AbbrName'] = df.apply(abbreviate, axis=1)
print(df)

印刷品:

            Name  AbbrName
0  Antonio Brown  A. Brown
1   LeSean McCoy  L. McCoy
2   Le'Veon Bell   L. Bell

即使没有正则表达式,这也应该足够简单。 结合使用字符串拆分和串联。

df.Name.str[0] + '.' + df.Name.str.split().str[-1]

0    A.Brown
1    L.McCoy
2     L.Bell
Name: Name, dtype: object

如果“ Name列可能有前导空格, df.Name.str[0]替换为df.Name.str.strip().str[0]

注意 :列至少必须具有两个名称。

之所以得到NaaN,是因为您的正则表达式不能与名称匹配。

相反,我将尝试以下方法:

parts = ff[name].split(' ')
ff['AbbrName'] = parts[0][0] + '.' + parts[1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM