gpt4 book ai didi

python - 有没有更好的方法来根据大小写进行名称分类?

转载 作者:行者123 更新时间:2023-11-28 22:16:48 25 4
gpt4 key购买 nike

我想对自由文本书写名称进行分类,并在此之后创建一个分类变量

  1. Only first : 只有第一个字母是大写
  2. 标准用法:每个单词的首字母大写
  3. All capital : 每个字母都是大写
  4. All small : 每个字母都在情人的情况下
  5. Unidentified : 不属于以上 4 个类别中的任何一个

这是我的数据

Id   Name
1 Donald trump
2 Barack Obama
3 Hillary ClintoN
4 BILL GATES
5 jeff bezoz
6 Mark Zuckerberg

我想要什么

Id   Name                 Category
1 Donald trump Only first
2 Barack Obama Standard usage
3 Hillary ClintoN Unidentified
4 BILL GATES All capital
5 jeff bezoz All small
6 Mark Zuckerberg Standard usage

我做的是

df['Uppercase'] = df['Name'].str.findall(r'[A-Z]').str.len()
df['Lowercase'] = df['Name'].str.findall(r'[a-z]').str.len()
df['WordCount'] = df['Name'].str.count(' ') + 1

然后使用map函数做一些逻辑,比如我们:

`df['Lowercase'] = 0` for `All capital`
`df['Uppercase'] = 0` for `All small`
`df['Uppercase'] - df['WordCount'] = 0` for `Standard usage`
`df['Uppercase'] = 1 and `df['WordCount']` for `Only first`

如果这不属于任何它标记为 Unidentified

但是,naBih baWazir 会根据标准规则被记录为Standard usage,而不是Unidentified,我认为还有更好的办法所以

最佳答案

使用函数 Series.str.islower Series.str.isupper Series.str.istitle和新专栏 numpy.select :

#test all letters without first for lower and first value for upper
m1 = df['Name'].str[1:].str.islower() & df['Name'].str[0].str.isupper()
m2 = df['Name'].str.istitle()
m3 = df['Name'].str.islower()
m4 = df['Name'].str.isupper()

df['Category'] = np.select([m1, m2, m3, m4],
['Only first','Standard usage','All small','All capital'],
default='Unidentified ')
print (df)
Id Name Category
0 1 Donald trump Only first
1 2 Barack Obama Standard usage
2 3 Hillary ClintoN Unidentified
3 4 BILL GATES All capital
4 5 jeff bezoz All small
5 6 Mark Zuckerberg Standard usage

@Jon Clements 的想法,谢谢:

m1 = df['Name'].str[1:].str.islower() & df['Name'].str[0].str.isupper()
df1 = df.Name.agg([str.istitle, str.islower, str.isupper])

df['Category'] = np.select(
[m1, *df1.values.T],
['Only first','Standard usage','All small','All capital'],
default='Unidentified '
)

关于python - 有没有更好的方法来根据大小写进行名称分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com