首页 > 解决方案 > 查找在一列中不以大写字母开头的条目

问题描述

我有一个如下的数据框:

df = {'id': [1,2,3,4,5,6,7], 'name': [Zeke,such,a,Maya,Derek,an,the]}

顺便说一句,这是一个巨大的数据框。现在我想找到错误的名称列表,例如“such”、“a”、“an”、“the”。我想删除它们并有一个像这样的df:

df_new= {'id': [1,4,5], 'name': [Zeke,Maya,Derek]}

我已经尝试通过以下方式查找每个特定的错误名称:

df.query('name=="a"')
df1.query('name=="an"')
df1.query('name=="the"')

问题是,我不知道有多少不同的错误名称存在。正确名称和错误名称之间的唯一区别是第一个字母(小写或大写)。

任何帮助表示赞赏。

标签: pythonpandas

解决方案


用于istitle检查第一个字符是否为大写,并过滤boolean indexing

df = df[df['name'].str.istitle()]

或通过索引获取第一个值并通过以下方式检查isupper

df = df[df['name'].str[0].str.isupper()]

为了获得更好的性能,它没有缺失值使用列表理解:

df = df[[x.istitle() for x in df['name']]]
df = df[[x[0].isupper() for x in df['name']]]

print (df)

   id   name
0   1   Zeke
3   4   Maya
4   5  Derek

推荐阅读