実現したいこと
以下のようなデータがあります。
Python
1# 'date1','date2','K','V' 2d = [ 3(3,1,1,22), 4(3,1,2,22), 5(3,1,1,20), 6(3,1,2,20), 7(3,1,3,50), 8(3,2,3,5), 9(3,2,2,5), 10(4,1,1,53), 11(4,1,2,53), 12(4,1,1,52), 13(4,1,2,52), 14(4,2,2,21), 15(5,1,1,32), 16(5,1,1,31), 17(5,1,2,31), 18(5,2,1,12), 19(5,1,3,32), 20(5,1,2,32), 21(5,2,3,33) 22]
次のようなDataframeを作りたいと考えています。
date1 | date2 | M12 | M3 |
---|---|---|---|
3 | 1 | 50 | 84 |
3 | 2 | 5 | 5 |
4 | 1 | 210 | 0 |
4 | 2 | 21 | 0 |
5 | 1 | 32 | 126 |
5 | 2 | 33 | 12 |
(※下記のご指摘にあったように、この表はM12,M3が逆でしたので、訂正致しました)
date1かつdate2でgroup分けしたい
Kが1か2のときの全てのVの合計をM12
Kが3のときの全てのVの合計をM3
(A&Bの重複はありません)
質問
質問
Pandasを使っての上記のDataframeの作成
以上、よろしくお願い致します。
該当のソースコード
Python
1import pandas as pd 2 3d = [ 4(3,1,1,22), 5(3,1,2,22), 6(3,1,1,20), 7(3,1,2,20), 8(3,1,3,50), 9(3,2,3,5), 10(3,2,2,5), 11(4,1,1,53), 12(4,1,2,53), 13(4,1,1,52), 14(4,1,2,52), 15(4,2,2,21), 16(5,1,1,32), 17(5,1,1,31), 18(5,1,2,31), 19(5,2,1,12), 20(5,1,3,32), 21(5,1,2,32), 22(5,2,3,33) 23] 24 25df = pd.DataFrame(data = d, columns=['date1','date2','K','V']) 26 27# M12とM3のseriesを作って、最後にmergeしようと考えました 28df12 = df.groupby(['date1', 'date2']).filter(lambda x : (x['K'] == 1 or x['K'] == 2)) 29df3 = df.groupby(['date1', 'date2']).filter(lambda x : x['K'] == 3) 30 31 (省略)
発生している問題・エラーメッセージ
上記ソースのgroupby部分。
補足情報(FW/ツールのバージョンなど)
Python 3.11.2
pandas 1.5.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/05/06 07:33 編集
2023/05/06 09:29 編集