다른 데이터 프레임의 열을 어떻게 비교합니까?


23

df의 한 열을 다른 df와 비교하고 싶습니다. 열은 이름과 성입니다. 한 데이터 프레임의 사람이 다른 데이터 프레임에 있는지 확인하고 싶습니다.


결과가 어떻게 보이는지 알려주시겠습니까? 두 df 모두에 이름이 나타나는 df입니까, df2 등의 count 또는 match 열과 같은 다른 항목이 필요한지 여부입니다. 감사!
Lyrist


관심있는 열의 두 데이터 프레임을 내부 결합하고 결과의 행 수가 양수인지 확인할 수 있습니다.
dsaxton

참고로, 큰 이름 집합의 이름과 성을 비교하면 고통으로 끝날 것입니다. 많은 사람들이 같은 이름을 가지고 있습니다!
Ken Syme

답변:


22

특정 열에서 등가 값을 확인하려면 Name이라고 말하면 두 데이터 프레임을 모두 새로운 것으로 병합 할 수 있습니다.

mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()

where빅 데이터 세트가 있다면 이것이 더 효율적이고 빠르다고 생각합니다.


1
내부 조인을 사용하고 모양을 확인하고 싶습니다.
dsaxton

10
df1.where(df1.values==df2.values).notna()

True항목은 공통 요소를 보여줍니다. 또한와 솔루션과 달리 공통 요소의 위치를 ​​나타냅니다 merge.


df.당신의 대답 은 무엇 입니까? 단지이 없습니다 df1하고 df2있지만df
학습자

3

서로 다른 두 열의 값 비교

set을 사용하여 각 열에서 고유 한 값을 가져옵니다. 이 두 세트의 교차점은 두 열 모두에서 고유 한 값을 제공합니다.

예:

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']))

산출: {2, 5}


두 데이터 프레임의 열 이름 비교

두 데이터 프레임의 열 이름을 비교하려는 경우 :

만약 df1df2두 dataframes은 다음과 같습니다 : set(df1.columns).intersection(set(df2.columns))

이것은 두 데이터 프레임 모두에 포함 된 고유 한 열 이름을 제공합니다.

예:

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.columns).intersection(set(df2.columns))

산출: {'c2', 'c3'}


질문 사람이 한 데이터 프레임의 사람이 다른 사람의 다른 사람인지 확인하기 때문에 다른 데이터 프레임의 두 개의 다른 열에있는 값을 비교하는 것이 문제라고 생각합니다.
Divyanshu Shekhar 2016

고마워, 나는 질문이 잘못되었다. 지금 답변을 업데이트했습니다.
aathiraks 2018 년

1

isinvalue_counts ()를 사용하여 두 df 사이의 공통 위치와 다른 위치의 정확한 수를 다시 확인할 수 있습니다

그렇게 :

df['your_column_name'].isin(df2['your_column_name']).value_counts()

결과:

예를 들어

참 = 공통 거짓 = 다름


0

데이터 프레임의 열은 데이터 계열입니다. 따라서 두 개의 열을 팬더 시리즈로 사용하면 numpy 배열과 마찬가지로 열을 비교할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.