过滤“熊猫”中所有不包含字母(字母)的行

oww*_*w14 1 python regex dataframe python-2.7 pandas

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

Col A.
50000
$927848
dog
cat 583
rabbit 444
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

Col A.
dog
cat 583
rabbit 444
Run Code Online (Sandbox Code Playgroud)

我一直在尝试使用regexand pandas过滤器选项解决不成功的问题。见打击。当我尝试合并过滤器的两个条件时,我特别遇到了问题。我该如何实现?

选项1:

df['Col A.'] = ~df['Col A.'].filter(regex='\d+')
Run Code Online (Sandbox Code Playgroud)

选项2

df['Col A.'] = df['Col A.'].filter(regex=\w+)
Run Code Online (Sandbox Code Playgroud)

选项3

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

要么

df['Col A.'] = ~(df['Col A.'].filter(regex='|'.join(digits)))
Run Code Online (Sandbox Code Playgroud)

要么

df['Col A.'] = df[~(df['Col A.'].filter(regex='|'.join(digits))) & (df['Col A.'].filter(regex='|'.join(letters)))]
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 6

我认为您需要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
Run Code Online (Sandbox Code Playgroud)

如果有一些NaNs值,则可以传递参数:

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