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列。 我可能enumerate
在id
列的值,但然後我將如何轉換數據幀相應?
感謝@Scott - 這似乎已從數據幀列中刪除了'date'和'id',儘管 – Craig
您可以reset_index結束以將其返回到數據框。 –
@克雷格更新.... –