前提
Python3
Jupyter notebook
pandas
実現したいこと
次のようなPandasのDataFrameを持っていて
data1 | data2 | data3 | group |
---|---|---|---|
100 | 110 | 120 | 1 |
130 | 140 | 150 | 1 |
160 | 170 | 180 | 1 |
190 | 200 | 210 | 2 |
220 | 230 | 240 | 2 |
250 | 260 | 270 | 2 |
280 | 290 | 300 | 2 |
310 | 320 | 330 | 3 |
340 | 350 | 360 | 3 |
これに対し
python
1def hoge_func(group) 2 ・・・ 3 return num1、num2、num3 4result = df.groupby('group').apply(hoge_func)
としました。
hoge_funcは見ての通りdata1、data2、data3の3つの値を使って
新しくnum1、num2、num3を返す関数です。
このとき下のようにresultがpandasのSeriesの形式になってしまい、
一つの列にnum1、num2、num3がタプルとして格納されてしまいます。
index | 0 |
---|---|
1 | (100,200,300) |
2 | (400,500,600) |
3 | (700,800,900) |
num1、num2、num3を別々の列とした一つのDataFrameを得るにはどうすればよいでしょうか。
ついでにそのDataFrameの列名もnum1、num2、num3としたいのですが
どなたか教えていただけないでしょうか。
試したこと
できてしまったSeriesにたいして、
python
1result.apply(pd.Series)
として改めてDataFrameにすることはできたのですが、
この場合どの時点で列名前を指定するのか分かりませんでした。
あとから.renameで列名を変えるのでもいいのですが、
せっかくならもっとスマートに結果の出力の時点で列名付きのDataFrameを得られないのかなと思いました。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/17 10:44