我有一个如下数据框:
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"')
问题是,我不知道存在多少个不同的错误名称。正确名称和错误名称之间的唯一区别是首字母(小写或大写)。
感谢您的帮助。
答案 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