現在、下記のようなデータフレームがあり
python
1df = pd.DataFrame([[1, '太郎', 'ばなな', 1], 2 [1, '太郎', 'いちご', 2], 3 [1, '太郎', 'メロン', 3], 4 [2, '次郎', 'ばなな', 1], 5 [2, '次郎', 'メロン', 3], 6 [2, '次郎', 'すいか', 4], 7 [3, '花子', 'いちご', 2], 8 [3, '花子', 'メロン', 3], 9 [3, '花子', 'みかん', 5]], 10 columns=['id','name','item','sort']) 11
id | name | item | sort |
---|---|---|---|
1 | 太郎 | ばなな | 1 |
1 | 太郎 | いちご | 2 |
1 | 太郎 | メロン | 3 |
2 | 次郎 | ばなな | 1 |
2 | 次郎 | メロン | 3 |
2 | 次郎 | すいか | 4 |
3 | 花子 | いちご | 2 |
3 | 花子 | メロン | 3 |
3 | 花子 | みかん | 5 |
下記の横持ちのデータに加工したいと思っています。
※items数はMax 3 とします。
|id|name|item01|item02|item03|
|--:|:--:|:--:|:--:|
|1|太郎|ばなな|いちご|メロン|
|2|次郎|ばなな|メロン|すいか|
|3|花子|いちご|メロン|みかん|
Pandas によって、縦持ち横持変換を pivot_table を使用して加工しようと思っていましたが、下記のようになるため、そもそも pivot でやること自体が間違っている気がしております。
python
1df.pivot_table(index=['id'], columns=['item'])
|item|いちご|すいか|ばなな|みかん|メロン|
|--:|:--:|:--:|:--:|
|id|||||
|1|2.0|NaN|1.0|NaN|3.0|
|2|NaN|4.0|1.0|NaN|3.0|
|3|2.0|NaN|NaN|5.0|3.0|
アドバイスございましたら、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/25 10:48 編集
2019/04/25 14:30