前提
初歩的な質問になってしまい申し訳ございません。
pythonでDataFrame内のlist型の要素を複数行に展開して、新たにDataFrameを作成したいと考えております。
下記の様なDataFrameから、infoの要素を展開させたいです。
その際に、list内のdictをカラムとして、新たに列を追加する方法をご教授いただけると幸いです。
id | menu_id | info |
---|---|---|
1 | 10 | [{"name":"bread","price":100}, {"name":"rice","price":200}] |
2 | 20 | Nan |
3 | 30 | [{"name":"curry","price":300}] |
やりたいこと
listを要素を複数行に展開し、その中にあるdictをカラムとして新たな列を追加したいです。
下記の様な結果をイメージしております。
id | menu_id | name | price |
---|---|---|---|
1 | 10 | "bread" | 100 |
1 | 10 | "rice" | 200 |
2 | 20 | Nan | Nan |
3 | 30 | "curry" | 300 |
試したこと
python
1tmp_df = df.set_index('id')['info'].apply(pd.Series).unstack().reset_index(1).rename(columns={0:'info'}) 2res = df[['id', 'menu_id']].merge(tmp_df, on='id')
listを複数行に展開することは出来たのですが、infoがNanの部分についても複数行作成されてしまい、失敗となりました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/29 07:36
2020/07/29 07:47
2020/07/29 08:55