パンダのデータフレームを使用するとします...
name age family
0 john 1 1
1 jason 36 1
2 jane 32 1
3 jack 26 2
4 james 30 2
次に、groupby()
...
group_df = df.groupby('family')
group_df = group_df.aggregate({'name': name_join, 'age': pd.np.mean})
次に、いくつかの集計/要約操作を実行します (私の例では、私の関数name_join
は名前を集計します):
def name_join(list_names, concat='-'):
return concat.join(list_names)
したがって、グループ化された要約出力は次のようになります。
age name
family
1 23 john-jason-jane
2 28 jack-james
質問:
集計されたテーブルから次のようにすばやく効率的に取得する方法はありますか?
name age family
0 john 23 1
1 jason 23 1
2 jane 23 1
3 jack 28 2
4 james 28 2
(注:age
列の値は単なる例です。この特定の例で平均化した後に失われる情報は気にしません)
私ができると思った方法は、あまり効率的ではないようです。
- 空のデータフレームを作成する
- のすべての行から
group_df
、名前を区切ります - 開始行にある名前と同じ数の行を持つデータフレームを返します
- 空のデータフレームに出力を追加します