在一栏中查找不以大写字母开头的肠

时间:2018-11-30 06:03:09

标签: python pandas

我有一个如下数据框:

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"')

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用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