String 删除数据帧中带有数字和字符串的行
我正在尝试删除其中只有数字或字符的行。例如,下面是dataframe列的示例: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
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