eu tenho um quadro de dados com duas colunas (nome1, nome2) gostaria de usar um dicionário de nomes de colunas e então fazer um loop for que compara se os valores são os mesmos e mostra especificamente os valores que não são os mesmos
quando tento o seguinte, recebo um erro "ValueError: O valor verdade de uma série é ambíguo. Use a.empty, a.bool(), a.item(), a.any() ou a.all()"
# create df
test2 = {'NAME1': ['Tom', 'nick', 'krish', 'jack'],
'NAME': ['Tom', 'nick', 'Carl', 'Bob']}
dfx = pd.DataFrame(test2)
#create dictionary
thisdict = {
"NAME1": "NAME"
}
#loop and display differences
for a, b in thisdict.items():
if dfx[a] != dfx[b]:
x = dfx[[a, b]]
print(x)
Você precisa comparar os valores linha por linha e filtrar as linhas onde os valores nas duas colunas não são iguais, tente como abaixo:
Esse tipo de filtragem para todas as linhas é o que o Pandas e outras estruturas de dataframe oferecem gratuitamente.
Ao fazer a comparação nas colunas você obtém uma série booleana, que por sua vez pode funcionar como índices para o dataframe original e selecionar automaticamente as colunas que lhe interessam: