我正在尝试删除仅包含数字或仅包含字符的行。例如,下面是示例pandas dataframe列:
col1:
business
served business
02446681
C96305407PLA
P0116711
在我的结果中,我需要以下值,因为第一行和第二行只包含字母,第三行仅包含数字。
col1:
C96305407PLA
P0116711
任何建议都将不胜感激!!
str.contains
df[df.business.str.contains('\d+')&df.business.str.contains('[A-Za-z]')]
Out[48]:
business
2 C96305407PLA
3 P0116711
使用str.extract函数并删除不必要的行。
df['col1'].str.extract('([A-Za-z]+\d+)', expand = False).dropna()
3 C96305407
4 P0116711
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