我有一个数据框,其中一列包含具有三种模式的字符串:
1) 仅限大写字母:APPLE COMPANY
2) 大写字母并以字母 AS 结尾:CAR COMPANY AS
3)大小写字母:John Smith
df = pd.DataFrame({'NAME': ['APPLE COMPANY', 'CAR COMPANY AS', 'John Smith']})
NAME ...
0 APPLE COMPANY ...
1 CAR COMPANY AS ...
2 John Smith ...
3 ... ...
如何把不满足2)和3)条件即1)的行取出来?换句话说,我如何才能取出只有大写字母、不以 AS 结尾或字符串中同时包含大写字母和小写字母的行?
我想到了这个:
df['NAME'].str.findall(r"(^[A-Z ':]+$)")
df['NAME'].str.findall('AS')
第一个提取只有大写字母的字符串,而第二个只找到AS。如果除了正则表达式之外还有其他方法,我也很乐意尝试。
预期结果是:
NAME ...
1 CAR COMPANY AS ...
2 John Smith ...
3 ... ...
请您参考如下方法:
这个正则表达式应该可以工作:
^(?:[A-Z ':]+ AS|.*[a-z].*)$
它匹配以下之一:
[A-Z ':]+ AS- 所有大写字母后跟 AS 的大小写.*[a-z].*- 小写字母的大小写
