【Python】PandasのDataFrameの行をリストにグループ化する方法
PandasのDataFrameで行をリストとしてグループ化するには、apply()関数を使用します。まず、必要なライブラリをインポートしましょう。
import pandas as pd
次に、「Car」と「Units」の2つの列を持つDataFrameを作成します。
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)groupby()とapply(list)を組み合わせることで、車種ごとに「Units」の値をリスト形式でまとめることができます。
dataFrame = dataFrame.groupby('Car')['Units'].apply(list)
サンプルコード
以下が完全なコード例です。
import pandas as pd
# DataFrameを作成
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
print("DataFrame ...\n", dataFrame)
# DataFrameの行をリストへグループ化
dataFrame = dataFrame.groupby('Car')['Units'].apply(list)
# グループ化した結果を表示
print("\nDataFrame ...\n", dataFrame)実行結果
上記のコードを実行すると、以下のような出力が得られます。
DataFrame ...
Car Units
0 BMW 100
1 Lexus 150
2 Audi 110
3 Mustang 80
4 Bentley 110
5 Jaguar 90
DataFrame ...
Car
Audi [110]
BMW [100]
Bentley [110]
Jaguar [90]
Lexus [150]
Mustang [80]
Name: Units, dtype: object処理の解説
このコードでは、まずgroupby('Car')によって「Car」列の値(車種名)ごとに行をグループ化し、続けて['Units']で「Units」列を選択しています。最後にapply(list)を適用することで、各グループに属する値がPythonのリスト形式へ変換されます。
結果として得られるSeriesでは、インデックスが車種名になり、対応する値が「Units」の数値を格納したリストになっていることが確認できます。この手法は、カテゴリごとに複数の値をひとつのリストとしてまとめたい場合に非常に便利です。なお、元のデータ内で同じ車種が複数回出現する場合でも、それらの値はすべて同じリストに集約されます。
-
【Python】Pandas DataFrameからサブセット(列の一部)を選択する方法
Pandas DataFrameのサブセット選択とは? Pandasでは、DataFrameから必要な列や行だけを取り出す操作を「サブセットの選択」と呼びます。大きなデータセットから目的のデータだけを抽出できれば、分析や前処理の効率が大幅に向上します。 この記事では、CSVファイルを読み込んだDataFrameから、1つの列、および複数の列を選択する基本的な方法を解説します。 使用するCSVファイルの内容 今回使用する「SalesData.csv」は、Microsoft Excelで開くと以下のような内容になっています。 CSVファイルからDataFrameを作成する まず、pd.rea
-
【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方
PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存