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

Python Pandas – 2つのIndexオブジェクトの和集合を、並べ替えずに作成する方法

はじめに

Pandasで2つのIndexオブジェクトの和集合(ユニオン)を作成するには、index1.union(index2) メソッドを使用します。通常、union() は結果を自動的に昇順に並べ替えますが、元の順序を保持したい場合は sort パラメータを False に設定します。

手順の概要

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

import pandas as pd

次に、2つのPandasインデックスを作成します。

index1 = pd.Index([10, 20, 30, 40, 50])
index2 = pd.Index([80, 65, 60, 70, 55])

作成した index1 と index2 を表示して確認します。

print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)

その後、union() メソッドで和集合を計算します。ここでは「sort」パラメータに False を指定することで、結果がソートされないようにしています。

res = index1.union(index2, sort=False)

サンプルコード

以下は、ここまでの手順をまとめた完全なコード例です。

import pandas as pd

# 2つのPandasインデックスを作成
index1 = pd.Index([10, 20, 30, 40, 50])
index2 = pd.Index([80, 65, 60, 70, 55])

# 作成したindex1とindex2を表示
print("Pandas Index1...\n", index1)
print("Pandas Index2...\n", index2)

# 各インデックスの要素数を返す
print("\nNumber of elements in index1...\n", index1.size)
print("\nNumber of elements in index2...\n", index2.size)

# 和集合を計算
# 「sort」パラメータにFalseを指定し、結果をソートしない
res = index1.union(index2, sort=False)

# 両インデックスの和集合
# 結果はソートされていない状態で出力される
print("\nThe index1 and index2 Union with unsorted result...\n", res)

出力結果

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

Pandas Index1...
Int64Index([10, 20, 30, 40, 50], dtype='int64')
Pandas Index2...
Int64Index([80, 65, 60, 70, 55], dtype='int64')

Number of elements in index1...
5

Number of elements in index2...
5

The index1 and index2 Union with unsorted result...
Int64Index([10, 20, 30, 40, 50, 80, 65, 60, 70, 55], dtype='int64')

ポイント解説

出力結果を見ると、和集合の要素が [10, 20, 30, 40, 50, 80, 65, 60, 70, 55] の順で並んでおり、数値の昇順にはなっていません。これは sort=False を指定した効果です。

sort パラメータを省略するか True を指定すると、結果は昇順に並べ替えられます。データの元の順序や挿入順序を維持したい場合(たとえばカテゴリの表示順を保ちたいときなど)は、sort=False の指定が有効です。なお、sort=None(デフォルト)の場合は、比較できない型同士の和集合では例外が発生する点にも注意してください。

  1. Python Pandas – データフレームのインデックスをマルチインデックス形式で表示する方法

    Pandas のデータフレームでインデックスをマルチインデックス(MultiIndex)形式で表示するには、dataframe.index を使用します。まずは、リストからなる辞書を作成してみましょう。 # リストの辞書 d = {Car: [BMW, Lexus, Audi, Mercedes, Jaguar, Bentley], Date_of_purchase: [2020-10-10, 2020-10-12, 2020-10-17, 2020-10-16, 2020-10-19, 2020-10-22]} 上記の辞書をもとに、DataFrame を作成します。 dataFra

  2. Python PandasのSeriesに存在しないインデックスを指定するとどうなる?KeyErrorの原因と回避方法

    はじめにPandasのSeries(シリーズ)では、インデックス値を自由にカスタマイズできます。カスタムインデックスを設定した場合、要素には series_name[index_value] の形式でアクセスします。指定されたインデックス値は元のシリーズ内で検索され、見つかれば対応するデータがコンソールに表示されます。しかし、アクセスしようとしたインデックスがシリーズに存在しない場合、エラーが発生します。以下にその具体例を示します。コード例import pandas as pd my_data = [34, 56, 78, 90, 123, 45] my_index = [ab, mn ,gh