###前提・実現したいこと
毎度お世話になります。以前質問させていただいたものに追加して質問させてください。
先日このような質問をさせていただきました。
- 「データフレーム中のある列が同じ値同士括り、その中で一番小さい行以外を削除する」 https://teratail.com/questions/64612?sip=n0070000_019&uid=62639
cost machine material_ID 0 100 A 1 1 110 A 2 2 120 B 2 3 150 B 3 4 100 B 1 5 210 C 1 6 200 C 2
上のようなデータが有り,それぞれ
- cost : ある材料を入れて機械を動かしたときのコスト
- machine : 機械の種類
- material_ID : 材料の種類
を表しています。
以前は
0. 同じ'machine'(機械の種類)で括り,
0. その中で'cost'が一番小さいものだけを残し
0. それ以外はすべて削除する
というルールでしたが,これに
0. 'used_material'(型はString)という列を追加する
0. 'used_material'に使用した材料をすべて書いておく
というルールを加えます。アウトプットとしては次のようになります。
cost machine material_ID used_material 0 100 A 1 1 + 2 4 100 B 1 1 + 2 + 3 6 200 C 2 1 + 2
###試したこと
これもForループで無理やり追加してくっつけたのですが,長くなりすぎてしまいました。
.groupbyで括りだしたものに.apllyや.mapを使ってうまく処理できないかな?とおもって試してみましたが、括りだしたデータフレームの操作がわからず、警告が出てしまいます。
グルーピングが余りにも不慣れで申し訳ございませんが、上手な方法があればご教示願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/18 14:50
2017/02/19 00:32