import pandas as pd

dados = { 
	"Código": [1623,5124,4785,5251,1578,9684,5187, 111, 222, 333, 444, 555 ],
	"Dimensões":["10 15 7", "15 7 8", "20 15 8", 
				"50 70 22", "c10 l20", "50 10 2",
				"75 20 10", "10 cl20", "1c0 l20", "111 212", "111 22 33", "11 22 33 44"],
}

# Criar o DataFrame
df = pd.DataFrame( dados )

# Criar uma TABELA VERDADE para selecionar 
# as linhas que contem letras na coluna 'Dimensões'
com_letras = df['Dimensões'].str.contains(r'[A-Za-z]')

print( "# tabela verdade de linhas que contem letras na coluna 'Dimensões':" )
print( com_letras )
print( "\n")


print( "# df de linhas COM letras na coluna 'Dimensões':")
print( df[ com_letras ] )
print( "\n")


# Criar uma TABELA VERDADE para selecionar
# as linhas não tem 2 espaços na coluna 'Dimensões':
dif_2espacos = df['Dimensões'].str.count(' ') != 2

print( "# tabela verdade de linhas não tem 2 espaços na coluna 'Dimensões':")
print(dif_2espacos)
print( "\n")


print( "# df de linhas não tem 2 espaços na coluna 'Dimensões':")
print(df[ dif_2espacos ])
print( "\n")


# Agora você pode utilizar bitwise `~` (NOT)
# para negar uma TABELA VERDADE e dessa forma
# transformar quem é TRUE em FALSE e vice-versa
# e depois bitwise `&` (AND) onde ambas tabelas 
# sejam verdadeiras, ou seja:
# sem_letras = ~com_letras
# tem_2espacos = ~dif_2espacos
# sem_letras_E_tem_2espacos = sem_letras & tem_2espacos
# df = df[ sem_letras_E_tem_2espacos ].copy()
df = df[ ~tem_letras & ~dif_2espacos ].copy()

print("# df de linhas ( SEM letras AND COM 2 espacos ) na coluna 'Dimensões' :")
print(df)


