使用pandas dataframe删除包含数字和字符串的行

4

我正在尝试删除仅包含数字或仅包含字符的行。例如,下面是示例pandas dataframe列:

col1:

business
served business
02446681
C96305407PLA
P0116711

在我的结果中,我需要以下值,因为第一行和第二行只包含字母,第三行仅包含数字。

col1:

C96305407PLA
P0116711

任何建议都将不胜感激!!
3个回答

4
使用两个 str.contains
df[df.business.str.contains('\d+')&df.business.str.contains('[A-Za-z]')]
Out[48]: 
       business
2  C96305407PLA
3      P0116711

3

使用str.extract函数并删除不必要的行。

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

3    C96305407
4     P0116711

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接