パンダ: groupby を使用してリスト内の行をグループ化する方法
次のメソッドを使用して、パンダの GroupBy を使用して DataFrame 行をリストにグループ化できます。
方法 1: 1 つの列のリスト内の行をグループ化する
df. groupby (' group_var ')[' values_var ']. agg ( list ). reset_index (name=' values_var ')
方法 2: 複数の列のリスト内の行をグループ化する
df. groupby (' team '). agg (list)
次の例は、次の pandas DataFrame で各メソッドを実際に使用する方法を示しています。
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'], ' points ': [10, 10, 12, 15, 19, 23, 20, 20, 26], ' assists ': [6, 8, 9, 11, 13, 8, 8, 15, 10]}) #view DataFrame print (df) team points assists 0 to 10 6 1 to 10 8 2 to 12 9 3 to 15 11 4 B 19 13 5 B 23 8 6 C 20 8 7 C 20 15 8 C 26 10
例 1: 1 つの列のリスト内の行をグループ化する
次の構文を使用して行をチーム列ごとにグループ化し、ポイント列の値のリストを作成できます。
#group points values into list by team
df. groupby (' team ')[' points ']. agg ( list ). reset_index (name=' points ')
team points
0 A [10, 10, 12, 15]
1 B [19, 23]
2 C [20, 20, 26]
DataFrame 内の固有のチームごとにポイント値のリストが生成されていることがわかります。
例 2: 複数の列のリスト内の行をグループ化する
次の構文を使用して行をチーム列ごとにグループ化し、ポイント列とアシスト列の値のリストを生成できます。
#group points and assists values into lists by team
df. groupby (' team '). agg ( list )
assist points
team
A [10, 10, 12, 15] [6, 8, 9, 11]
B [19, 23] [13, 8]
C [20, 20, 26] [8, 15, 10]
データフレーム内の固有のチームごとにポイント値のリストとアシスト値のリストが生成されていることがわかります。
注: pandas での GroupBy 操作の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas: グループごとの累積合計を計算する方法
パンダ: グループごとに一意の値を数える方法
Pandas: グループごとにモードを計算する方法
パンダ: グループごとの相関を計算する方法