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

PythonでPandas DataFrameを重複行なしで連結する方法

複数のDataFrameを連結するにはconcat()メソッドを使用します。さらに、連結後の重複行を除外したい場合は、drop_duplicates()メソッドを組み合わせることで簡単に実現できます。

基本の手順

まず、必要なライブラリをインポートします。

import pandas as pd

次に、連結対象となる2つのDataFrameを作成します。

# DataFrame1を作成
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Jaguar', 'Audi', 'Mustang'],
        "Units": [100, 150, 110, 80]
    }
)

# DataFrame2を作成
dataFrame2 = pd.DataFrame(
    {
        "Car": ['Tesla', 'Jaguar', 'Mercedes', 'Mustang'],
        "Units": [120, 150, 180, 80]
    }
)

この例では、「Jaguar」と「Mustang」の行が両方のDataFrameに存在するため、単純に連結すると重複が発生します。

そこで、concat()で連結した直後にdrop_duplicates()を呼び出すことで、重複行を自動的に取り除けます。

concatRes = pd.concat([dataFrame1, dataFrame2]).drop_duplicates()

完全なサンプルコード

以下が全体のコードです。

import pandas as pd

# DataFrame1を作成
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Jaguar', 'Audi', 'Mustang'],
        "Units": [100, 150, 110, 80]
    }
)

print("DataFrame1 ...\n", dataFrame1)

# DataFrame2を作成
dataFrame2 = pd.DataFrame(
    {
        "Car": ['Tesla', 'Jaguar', 'Mercedes', 'Mustang'],
        "Units": [120, 150, 180, 80]
    }
)

print("\nDataFrame2 ...\n", dataFrame2)

# DataFrameを連結し、重複行を削除
concatRes = pd.concat([dataFrame1, dataFrame2]).drop_duplicates()
print("\n重複のない連結結果...\n", concatRes)

出力結果

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

DataFrame1 ...
      Car  Units
0     BMW    100
1  Jaguar    150
2    Audi    110
3 Mustang     80

DataFrame2 ...
       Car  Units
0    Tesla    120
1   Jaguar    150
2 Mercedes    180
3  Mustang     80

重複のない連結結果...
       Car  Units
0      BMW    100
1   Jaguar    150
2     Audi    110
3  Mustang     80
0    Tesla    120
2 Mercedes    180

ポイント解説

drop_duplicates()は、デフォルトではすべての列の値が一致する行を重複として判定します。特定の列だけを基準に重複を排除したい場合は、subset引数を指定してください。また、連結後にインデックスを振り直したい場合や、元のインデックスが不要な場合は、pd.concat([dataFrame1, dataFrame2], ignore_index=True)のようにignore_index=Trueを指定すると、0から始まる新しい連番インデックスが割り当てられ、結果がより見やすくなります。

  1. Python Pandas:dropna()メソッドでNaN値を除いたインデックスを取得する方法

    PandasでNaN値(欠損値)を含まないインデックスを取得するには、index.dropna()メソッドを使用します。このメソッドは、元のインデックスからすべてのNaN値を取り除いた新しいIndexオブジェクトを返します。必要なライブラリのインポートまず、必要なライブラリをインポートしましょう。import pandas as pd import numpy as npNaN値を含むインデックスの作成次に、NaN値をいくつか含むPandasインデックスを作成します。index = pd.Index([50, 10, 70, np.nan, 90, 50, np.nan, np.nan, 30

  2. Python・PandasでヘッダーなしのCSVファイルを読み込む方法

    CSVファイルをヘッダー(列名)なしで読み込むには、pandasのread_csv()メソッドでheaderパラメータに「None」を指定します。 ここでは、Microsoft Excelで開いた以下のようなCSVファイル(SalesData.csv)を例に解説します。1行目には「Car」「Reg_Price」「Units」というヘッダーが含まれています。 必要なライブラリのインポート まず、pandasライブラリをインポートします。 import pandas as pd 通常どおりCSVファイルを読み込む headerパラメータを指定せずにCSVファイルを読み込むと、先頭行が自動的にヘッダ