はじめに
お世話になります。
Pandasで加工した下記のデータフレーム(以下DF)につきまして、求める要件2点があります。
実現方法についてお知恵をお貸しいただきたいです。
|品番|品名|部品|単価|生産数|
|:--|:--:|--:|--:|
|111|製品AAA|A|0.5|1,000|
|111|製品AAA|B2|0.5|1,000|
|111|製品AAA|C|0.5|1,000|
|111|製品AAA|ふくろ|0.5|1,000|
|111|製品AAA|箱|0.5|1,000|
|222|製品BBB|C|0.5|2,000|
|222|製品BBB|箱|0.5|2,000|
|333|製品CCC|A1|0.5|3,000|
|333|製品CCC|A2|0.5|3,000|
|333|製品CCC|箱|0.5|3,000|
やりたいこと
質問のタイトルが適切でないような気がして申し訳ないですが、やりたいことは下記の二つです。
要件1
上記のDFに新規列[部品項目数]という列を作り、商品毎の部品列の要素数のcountを出したいです。
これだけなら自分で解決できるのですが、下記の条件があります。
条件:部品列の"ふくろ"、"箱"という値に関してはカウントしない
商品毎に"ふくろ"だけがある商品、"箱"だけがある商品、両方ある、両方ない、パターンがあります。
要件2
商品毎の部品列の要素を文字列連結したいです。つまり商品Aであれば部品は["A","B2","C","ふくろ","箱"]がありますので、要件Aとおなじく"ふくろ","箱"は無視したそれ以外の値を、「"A,B2,C"」といったような形でひとつの文字列にし、そしてそれを新規列["部品一覧"]列に挿入したいです。
求める結果
つまり、下記のようなDFを取得したい、というのが目的になります。
|品番|品名|部品|単価|生産数|部品項目数|部品一覧
|:--|:--:|--:|--:|--:|
|111|製品AAA|A|0.5|1,000|3|A,B2,C
|222|製品BBB|C|0.5|2,000|1|C
|333|製品CCC|A1|0.5|3,000|2|A1,A2
解決のために実施したこと
品番の数だけ、行数を数えましたが、"ふくろ"、"箱"を無視する方法がわかりませんでした。
python
1 2pivot_df = df.pivot_table(values="総生産数" ,index=['品番'],columns="部品", 3 aggfunc="count" ,fill_value=0,dropna=False)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/31 15:45
2019/04/01 00:11 編集
2019/04/02 15:44