Python Pandas – difference()メソッドで他方のインデックスに含まれない要素からなる新しいインデックスを返す(ソートなし)
Pandasのdifference()メソッドとは
あるインデックスから、もう一方のインデックスに含まれていない要素だけを抜き出し、しかも結果をソートせずに元の順序のまま新しいインデックスとして取得したい場合は、difference()メソッドを使用します。このとき、sortパラメータにFalseを指定することで、結果が自動的に並べ替えられるのを防ぐことができます。
デフォルトではdifference()は結果を昇順にソートして返しますが、sort=Falseを指定すると、元のインデックス内での出現順序がそのまま維持されます。
必要なライブラリのインポート
まず、必要なライブラリをインポートします。
import pandas as pd
2つのPandasインデックスを作成する
次に、比較対象となる2つのPandasインデックスを作成します。
index1 = pd.Index([30, 10, 20, 50, 40]) index2 = pd.Index([80, 40, 60, 20, 55])
インデックスを表示する
作成したindex1とindex2を表示して確認しましょう。
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)差分を取得する(ソートなし)
両インデックスの差分を求めます。「sort」パラメータに「False」を設定することで、結果がソートされずに元の順序のまま出力されます。
res = index1.difference(index2, sort=False)
サンプルコード(完全版)
以下が完全なコード例です。
import pandas as pd
# 2つのPandasインデックスを作成
index1 = pd.Index([30, 10, 20, 50, 40])
index2 = pd.Index([80, 40, 60, 20, 55])
# Pandasのindex1とindex2を表示
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)
# Index1とIndex2の要素数を表示
print("\nNumber of elements in index1...\n", index1.size)
print("\nNumber of elements in index2...\n", index2.size)
# 両インデックスの差分を取得
# 「sort」パラメータに「False」を設定して結果をソートしない
res = index1.difference(index2, sort=False)
# 差分の表示:他方のインデックスに含まれない要素からなる新しいインデックスを返す
print("\nDifference...\n", res)実行結果
上記のコードを実行すると、以下のような出力が得られます。
Pandas Index1... Int64Index([30, 10, 20, 50, 40], dtype='int64') Pandas Index2... Int64Index([80, 40, 60, 20, 55], dtype='int64') Number of elements in index1... 5 Number of elements in index2... 5 Difference... Int64Index([30, 10, 50], dtype='int64')
ポイント解説
実行結果を見ると、差分の結果が「[30, 10, 50]」となっており、index1内での元の順序(30 → 10 → 50)が保たれていることがわかります。もしsort=True(デフォルト)を指定した場合は、「[10, 30, 50]」のように昇順にソートされた結果が返されます。
また、使用しているpandasのバージョンによっては、Int64Indexではなく単にIndexとして表示されることがありますが、動作自体は変わりません。データ分析の前処理などで順序を維持したまま集合演算を行いたい場合に、sort=Falseの指定は非常に便利です。
-
Python Pandas入門:putmask()でマスク条件に基づく新しいインデックスを生成する方法
はじめにマスク(条件式)を使って値を置き換えた新しいインデックスを取得したい場合は、Pandasのindex.putmask()メソッドを使用します。このメソッドは、指定した条件がTrueとなる要素を、別の値で置き換えた新しいIndexオブジェクトを返します。まず、必要なライブラリをインポートしましょう。import pandas as pdPandasインデックスの作成次に、数値を含むPandasインデックスを作成します。index = pd.Index([5, 65, 10, 17, 75, 40])作成したインデックスを表示して確認してみましょう。print(Pandas Index..
-
Python Pandas – index.take()でインデックス位置を指定して新しいインデックスを返す方法
Pandasのindex.take()メソッドとはPandasで、指定したインデックス位置にある値だけを抜き出し、その新しいIndexオブジェクトを返したい場合は、index.take()メソッドを使用します。まずは、必要なライブラリをインポートしましょう。import pandas as pdPandasインデックスの作成次に、商品名を要素とするPandasインデックスを作成します。index = pd.Index([Electronics,Accessories,Decor, Books, Toys], name =Products)Pandasインデックスの表示print(Pandas