1
これはthis answerと少し似ていますが、私の問題は少し異なります。パンダ:行の値を符号化する/データフレームを変換する
マイデータフレーム:
df=pd.DataFrame([{'date': '2017-01-01', 'id': 'google', 'category': 1, 'Score1': 51, 'Score2': 531},
{'date': '2017-01-01', 'id': 'google', 'category': 2, 'Score1': 592, 'Score2': 152},
{'date': '2017-01-01', 'id': 'google', 'category': 5, 'Score1': 55, 'Score2': 255},
{'date': '2017-01-01', 'id': 'yahoo', 'category': 7, 'Score1': 597, 'Score2': 357},
{'date': '2017-01-01', 'id': 'yahoo', 'category': 8, 'Score1': 58, 'Score2': 58},
{'date': '2017-01-02', 'id': 'google', 'category': 5, 'Score1': 795, 'Score2': 455},
{'date': '2017-01-02', 'id': 'google', 'category': 1, 'Score1': 71, 'Score2': 751},
{'date': '2017-01-02', 'id': 'google', 'category': 2, 'Score1': 792, 'Score2': 352},
{'date': '2017-01-02', 'id': 'yahoo', 'category': 7, 'Score1': 77, 'Score2': 957},
{'date': '2017-01-02', 'id': 'yahoo', 'category': 8, 'Score1': 798, 'Score2': 358}
])
そして、次のようになります。
date id category Score1 Score2
0 2017-01-01 google 1 51 531
1 2017-01-01 google 2 592 152
2 2017-01-01 google 5 55 255
3 2017-01-01 yahoo 7 597 357
4 2017-01-01 yahoo 8 58 58
5 2017-01-02 google 5 795 455
6 2017-01-02 google 1 71 751
7 2017-01-02 google 2 792 352
8 2017-01-02 yahoo 7 77 957
9 2017-01-02 yahoo 8 798 358
私はこのようになりますデータフレームにこれを変換する必要があります。
date id cat1_score1 cat2_score1 cat5_score1 cat7_score1 cat8_score1 cat1_score2 cat2_score2 cat5_score2 cat7_score2 cat8_score2
1/1/17 google 51 592 55 0 0 531 152 255 0 0
1/1/17 yahoo 0 0 0 597 58 0 0 0 357 58
1/2/17 google 71 792 795 0 0 751 352 455 0 0
1/2/17 yahoo 0 0 0 77 798 0 0 0 957 358
ここで注意すべき点がありますカテゴリの数はid
からid
まで変わる可能性があります。また、潜在的に考慮する必要がある二次ID列が存在する可能性があります。 id
列の値をenumerate
にすることはできますが、それに応じてデータフレームをどのように変換するのですか?
ありがとう@Scott - これはデータフレーム列から 'date'と' id'を削除したようです。 – Craig
最後をデータフレームに戻すために、最後をリセットすることができます。 –
@Craig更新しました.... –