Skip to main content
 首页 » 编程设计

python之筛选“pandas”中不包含字母(alpha)的所有行

2025年05月04日14artech

我正在尝试使用 正则表达式 过滤 pandas 数据框。 我想删除那些不包含任何字母的行。例如:

Col A. 
50000 
$927848 
dog 
cat 583 
rabbit 444 

我想要的结果是:

Col A. 
dog 
cat 583 
rabbit 444 

我一直在尝试使用 regex 和 pandas 过滤器选项解决这个问题,但没有成功。见打击。当我尝试合并过滤器的两个条件时,我特别遇到了问题。我怎样才能做到这一点?

选项 1:

df['Col A.'] = ~df['Col A.'].filter(regex='\d+') 

选项 2

df['Col A.'] = df['Col A.'].filter(regex=\w+) 

选项 3

from string import digits, letters 
df['Col A.'] = (df['Col A.'].filter(regex='|'.join(letters))) 

或

df['Col A.'] = ~(df['Col A.'].filter(regex='|'.join(digits))) 

或

df['Col A.'] = df[~(df['Col A.'].filter(regex='|'.join(digits))) & (df['Col A.'].filter(regex='|'.join(letters)))] 

请您参考如下方法:

我想你需要 str.contains通过 boolean indexing 过滤包含字母的值:

df =  df[df['Col A.'].str.contains('[A-Za-z]')] 
print (df) 
       Col A. 
2         dog 
3     cat 583 
4  rabbit 444 

如果有一些NaN的值你可以传递一个参数:

df = df[df['Col A.'].str.contains('[A-Za-z]', na=False)]     
print (df) 
       Col A. 
3         dog 
4     cat 583 
5  rabbit 444