String 删除数据帧中带有数字和字符串的行

String 删除数据帧中带有数字和字符串的行,string,pandas,dataframe,String,Pandas,Dataframe,我正在尝试删除其中只有数字或字符的行。例如,下面是dataframe列的示例: col1: business served business 02446681 C96305407PLA P0116711 在我的结果中,我需要以下值,因为第一行和第二行仅包含字符,第三行仅包含数字 col1: C96305407PLA P0116711 任何建议都将不胜感激 str.提取并删除不必要的行 df['col1'].str.extract('([A-Za-z]+\d+)', expand = Fa

我正在尝试删除其中只有数字或字符的行。例如,下面是dataframe列的示例:

col1:

business
served business
02446681
C96305407PLA
P0116711
在我的结果中,我需要以下值,因为第一行和第二行仅包含字符,第三行仅包含数字

col1:

C96305407PLA
P0116711

任何建议都将不胜感激

str.提取并删除不必要的行

df['col1'].str.extract('([A-Za-z]+\d+)', expand = False).dropna()

3    C96305407
4     P0116711

使用两个
str.contains

df[df.business.str.contains('\d+')&df.business.str.contains('[A-Za-z]')]
Out[48]: 
       business
2  C96305407PLA
3      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