Python – Pandasのstack()メソッドで単一レベルの列をスタックする方法
Pandasで単一レベルの列(カラム)を持つDataFrameをスタックするには、dataframe.stack()メソッドを使用します。stack()は、列ラベルを行インデックスの最下層に回転させることで、MultiIndexを持つSeriesを生成する便利な関数です。
まず、必要なライブラリをインポートしましょう。
import pandas as pd
単一レベルの列を持つDataFrameの作成
次に、単一レベルの列を持つDataFrameを作成します。
dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b'])このDataFrameは、行インデックスとして「w」「x」「y」「z」、列ラベルとして「a」「b」を持ちます。
stack()メソッドでスタックする
stack()メソッドを呼び出すだけで、DataFrameをスタックできます。
dataFrame.stack()
完全なコード例
以下が実行可能な完全なコードです。
import pandas as pd
# DataFrameの作成
dataFrame = pd.DataFrame([[10, 15], [20, 25], [30, 35], [40, 45]],
index=['w', 'x', 'y', 'z'],
columns=['a', 'b'])
# DataFrameの表示
print("DataFrame...\n", dataFrame)
# stack()でスタック
print("\nStacking...\n", dataFrame.stack())出力結果
上記のコードを実行すると、次のような出力が得られます。
DataFrame...
a b
w 10 15
x 20 25
y 30 35
z 40 45
Stacking...
w a 10
b 15
x a 20
b 25
y a 30
b 35
z a 40
b 45
dtype: int64解説
出力結果を見ると、元のDataFrameでは横方向に並んでいた列「a」と「b」の値が、スタック後には行インデックスの下位レベルとして縦方向に配置されていることがわかります。このように、stack()を使うとワイド形式のデータをロング形式へ変換でき、階層的なインデックス操作やデータの整形に役立ちます。逆に、スタックされたデータを元の形式に戻したい場合はunstack()メソッドを使用します。
-
Python Pandas – DataFrameを1対1(one-to-one)の関係でマージする方法
Pandas DataFrameを1対1の関係でマージする PandasのDataFrameをマージするには、merge()関数を使用します。1対1(one-to-one)の関係は、merge()関数のvalidateパラメータに次のように指定することで実現できます。 validate = one_to_one # または validate = 1:1 validateパラメータに1対1を指定すると、マージキーが左右両方のデータセットで一意であるかどうかが検証されます。もし重複したキーが見つかった場合は、MergeErrorが発生してマージ処理が中断されるため、データの整合性を事前にチェックで
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa