異なるデータフレームの列を比較するにはどうすればよいですか?


23

dfの1つの列を他のdfの列と比較したいと思います。列は名前と姓です。あるデータフレームの人が別のデータフレームにいるかどうかを確認したいと思います。


結果をどのように表示するかを指定してください。両方のdfに名前が表示されているdfであり、countなど他の何かが必要か、df2の列に一致するかなど。ありがとう!
ライリスト


気になる列の2つのデータフレームを内部結合し、結果の行数が正であるかどうかを確認できます。
dsaxton

参考までに、まともな名前のセットの姓と名を比較すると、苦痛になります-多くの人が同じ名前を持っています!
ケンSyme

回答:


22

特定の列で等しい値を確認したい場合は、名前に両方のデータフレームを新しいものにマージできるとしましょう。

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.あなたの答えは何ですか?そこだけではないdf1df2しかし、誰df
学習者

3

2つの異なる列の値を比較する

setを使用して、各列で一意の値を取得します。これら2つのセットの共通部分は、両方の列に一意の値を提供します。

例:

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}


2つのデータフレームの列名の比較

2つのデータフレームの列名を比較しようとしている場合:

df1df2が2つのデータフレームの場合: 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'}


質問は、あるデータフレームの人が別のデータフレームにあるかどうかを確認したいので、異なるデータフレームの2つの異なる列の値を比較することに関する質問だと思います。
ディビアンシュシェカル

おかげで、私は質問を間違えました。今すぐ答えを更新しました。
aathiraks

1

isinvalue_counts()を使用して、2つのdfの間の共通の位置と異なる位置の正確な数を再確認できます

そのように:

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

結果:

例のアイシン

True =共通False =異なる


0

データフレームの列はデータ系列であることに注意してください。したがって、2つの列をパンダシリーズとして使用する場合、numpy配列で行うのと同じように比較できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.