我正在尝试删除仅包含数字或字符的行。例如,下面是示例熊猫数据框列:
col1:
business
served business
02446681
C96305407PLA
P0116711
在我的结果中,我需要以下值,因为第一行和第二行仅包含字符,而第三行仅是数字。
col1:
C96305407PLA
P0116711
任何建议将不胜感激!
答案 0 :(得分:3)
str.extract并删除不必要的行。
df['col1'].str.extract('([A-Za-z]+\d+)', expand = False).dropna()
3 C96305407
4 P0116711
答案 1 :(得分:3)
使用两个image: BugHunterUK-dev-environment:latest
str.contains
答案 2 :(得分:3)
pandas.Series.str.contains
与正则表达式一起使用更简单的正则表达式,但是允许'123 456'
行,因为'3 '
和' 4'
都满足该模式。
df[df.col1.str.contains('\d\D|\D\d')]
col1
3 C96305407PLA
4 P0116711
这通过显式强制模式仅在找到数字/字母或字母/数字时才匹配来解决上述正则表达式的缺点。
df[df.col1.str.contains('(?i)\d[a-z]|[a-z]\d')]
col1
3 C96305407PLA
4 P0116711