Como faço para comparar colunas em diferentes quadros de dados?
23
Gostaria de comparar uma coluna de um df com outros df's. As colunas são nomes e sobrenomes. Eu gostaria de verificar se uma pessoa em um quadro de dados está em outro.
Você poderia indicar como deseja que o resultado seja? É um df com nomes aparecendo nos dois dfs, e se você também precisa de mais alguma coisa, como contagem ou coluna correspondente no df2, etc. Obrigado!
Você pode unir os dois quadros de dados nas colunas de seu interesse e verificar se o número de linhas no resultado é positivo.
dsaxton
Para sua informação, comparar o nome e o sobrenome em qualquer conjunto decentemente grande de nomes terminará com dor - muitas pessoas têm o mesmo nome!
22618 Ken Syme
Respostas:
22
Se você deseja verificar valores iguais em uma determinada coluna, digamos Nome, você pode mesclar os dois Dataframes a um novo:
Eu acho que a pergunta é sobre comparar os valores em duas colunas diferentes em diferentes quadros de dados, pois a pessoa que pergunta quer verificar se uma pessoa em um quadro de dados está em outro.
Divyanshu Shekhar
Obrigado, entendi errado a pergunta. Atualizei a resposta agora.
aathiraks
1
Você pode verificar o número exato de posições comuns e diferentes entre dois df usando isin e value_counts ()
Observe que as colunas dos quadros de dados são séries de dados. Portanto, se você usar duas colunas como séries de pandas, poderá compará-las como faria com matrizes numpy.
Respostas:
Se você deseja verificar valores iguais em uma determinada coluna, digamos Nome, você pode mesclar os dois Dataframes a um novo:
Eu acho que isso é mais eficiente e mais rápido do que
where
se você tiver um grande conjunto de dadosfonte
True
entradas mostram elementos comuns. Isso também revela a posição dos elementos comuns, ao contrário da solução commerge
.fonte
df.
sua resposta? Existem apenasdf1
edf2
mas nãodf
Comparando valores em duas colunas diferentes
Usando set, obtenha valores exclusivos em cada coluna. A interseção desses dois conjuntos fornecerá os valores exclusivos nas duas colunas.
Exemplo:
df1 = pd.DataFrame({'c1': [1, 4, 7], 'c2': [2, 5, 1], 'c3': [3, 1, 1]}) df2 = pd.DataFrame({'c4': [1, 4, 7], 'c2': [3, 5, 2], 'c3': [3, 7, 5]}) set(df1['c2']).intersection(set(df2['c2']))
Saída:
{2, 5}
Comparando nomes de colunas de dois quadros de dados
Caso você esteja tentando comparar os nomes de colunas de dois quadros de dados:
Se
df1
edf2
são os dois quadros de dados:set(df1.columns).intersection(set(df2.columns))
Isso fornecerá os nomes de colunas exclusivos que estão contidos nos dois quadros de dados.
Exemplo:
Saída:
{'c2', 'c3'}
fonte
Você pode verificar o número exato de posições comuns e diferentes entre dois df usando isin e value_counts ()
Curtiu isso:
Resultado:
Verdadeiro = comum Falso = diferente
fonte
Observe que as colunas dos quadros de dados são séries de dados. Portanto, se você usar duas colunas como séries de pandas, poderá compará-las como faria com matrizes numpy.
fonte