2024-09-25 00:36:31 发布
网友
我需要使一些名称格式匹配合并以后在我的脚本。我的“Name”列是从csv导入的,包含如下名称:
安东尼奥·布朗
莱森麦考伊
勒文贝尔
对于我的剧本,我想得到名字的第一个字母,并将其与姓氏结合起来,这样。。。。你知道吗
A.棕色
L.麦考伊
L.贝尔
下面是我现在所拥有的,每次都会返回一个纳安:
ff['AbbrName'] = ff['Name'].str.extract('([A-Z]\s[a-zA-Z]+)', expand=True)
谢谢!你知道吗
另一个选项使用str.replace方法和^([A-Z]).*?([a-zA-Z]+)$;^([A-Z])捕获字符串开头的第一个字母;([a-zA-Z]+)$匹配最后一个单词,然后通过在第一个捕获的组和第二个捕获的组之间添加.来重建名称:
str.replace
^([A-Z]).*?([a-zA-Z]+)$
^([A-Z])
([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
这应该足够简单,即使没有regex。使用字符串拆分和串联的组合。你知道吗
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]。你知道吗
Name
df.Name.str[0]
df.Name.str.strip().str[0]
警告:列必须至少有两个名称。你知道吗
如果你只是^{}一个函数,它被第一个空格分割,得到第一个单词的第一个字符,再加上剩下的字符,会怎么样
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
另一个选项使用
str.replace
方法和^([A-Z]).*?([a-zA-Z]+)$
;^([A-Z])
捕获字符串开头的第一个字母;([a-zA-Z]+)$
匹配最后一个单词,然后通过在第一个捕获的组和第二个捕获的组之间添加.
来重建名称:这应该足够简单,即使没有regex。使用字符串拆分和串联的组合。你知道吗
如果
Name
列可能有前导空格,请将df.Name.str[0]
替换为df.Name.str.strip().str[0]
。你知道吗警告:列必须至少有两个名称。你知道吗
如果你只是^{} 一个函数,它被第一个空格分割,得到第一个单词的第一个字符,再加上剩下的字符,会怎么样
印刷品:
相关问题 更多 >
编程相关推荐