Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python – intersection()を使って2つのPandas DataFrameの共通列を取得する方法


2つのDataFrame間で共通する列(カラム)を取得するには、intersection()メソッドを使用します。このメソッドはIndexオブジェクトに対して使うことができ、両方のDataFrameに存在する列名だけを抽出してくれます。まずは、サンプル用に2つのDataFrameを作成してみましょう。

# dataframe1 の作成
dataFrame1 = pd.DataFrame({
   "Car": ['Bentley', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
   "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})

# dataframe2 の作成
dataFrame2 = pd.DataFrame({
   "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Units_Sold": [100, 110, 150, 80, 200, 90]
})

共通する列を取得するには、次のように記述します。

dataFrame2.columns.intersection(dataFrame1.columns)

実行例

以下が完全なコードです。

import pandas as pd

# dataframe1 の作成
dataFrame1 = pd.DataFrame({
   "Car": ['Bentley', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Cubic_Capacity": [2000, 1800, 1500, 2500, 2200, 3000],
   "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})
print("Dataframe1...\n", dataFrame1)

# dataframe2 の作成
dataFrame2 = pd.DataFrame({
   "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
   "Units_Sold": [100, 110, 150, 80, 200, 90]
})
print("Dataframe2...\n", dataFrame2)

# intersection() を使って共通列を取得
res = dataFrame2.columns.intersection(dataFrame1.columns)
print("\nCommon columns...\n", res)

出力結果

上記のコードを実行すると、次のような出力が得られます。

Dataframe1...
        Car  Cubic_Capacity  Reg_Price
0   Bentley            2000       7000
1     Lexus            1800       1500
2     Tesla            1500       5000
3   Mustang            2500       8000
4  Mercedes            2200       9000
5    Jaguar            3000       6000
Dataframe2...
        Car  Units_Sold
0      BMW         100
1    Lexus         110
2    Tesla         150
3  Mustang          80
4 Mercedes         200
5   Jaguar          90

Common columns...
Index(['Car'], dtype='object')

この例では、dataFrame1とdataFrame2のどちらにも「Car」列が含まれているため、intersection()の結果として「Car」だけが返されます。Cubic_CapacityやReg_Price、Units_Soldなど片方にしか存在しない列は除外されます。複数のDataFrameを結合・比較する前に共通列を確認したい場合などに、この方法が便利です。

  1. Pythonで2つの文字列の共通部分を求める方法

    はじめに Pythonでは、2つの文字列に共通して含まれる文字(共通部分・積集合)を抽出したい場面があります。本記事では、ループ処理を使った基本的な方法と、set(集合)を活用した効率的な方法の2つのアプローチを、実際のコード例とともにわかりやすく解説します。 方法1:ループ処理を使う方法 まずは、最も基本的なループ処理による方法です。以下の手順で問題を解決できます。 2つの文字列と、結果を格納するための空の文字列を用意します。 1つ目の文字列を先頭から順に走査し、現在の文字が2つ目の文字列にも含まれており、かつ結果の文字列にまだ存在しない場合にのみ追加します。 最終的な結果を出力します。

  2. Pythonで2つの配列の共通部分(交差)を効率的に求める方法

    問題概要2つの配列 A と B が与えられたとき、これらの配列に共通して含まれる要素(交差・共通部分)を求めます。例えば、A = [1, 4, 5, 3, 6]、B = [2, 3, 5, 7, 9] の場合、両方の配列に存在する要素は 3 と 5 だけなので、結果は [3, 5] となります。この種の問題では重複の扱いがポイントになります。ある要素が両方の配列に複数回現れる場合は、その出現回数のうち少ない方の回数だけ結果に含める必要があります。解法のアプローチこの問題は、ハッシュマップ(Pythonでは辞書型 dict)を使って要素の出現頻度を管理することで、効率的に解くことができます。手順