[英]Rearrange Columns and Rows from a Pandas Dataframe
我有一個 CSV 文件,其中包含 Movie_ID 和 Movie_Name 列,另一個文件包含 User_ID、Movie_ID 和 Rating 列。 如何創建一個新的 dataframe,其中列是 Movie_Name 或 Movie_ID,行是 User_ID 和 Rating? 例如像
用戶身份 | 電影1 | 電影2 | 電影3 |
---|---|---|---|
0 | 1個 | 4個 | 5個 |
1個 | 4個 | 3個 | 5個 |
注意:並非每個用戶都對每部電影進行了評分。
先感謝您。
對於此操作,我認為加入可以完成這項工作。 像這樣:
df1.join(df2, on='Movie_ID')
如果您提供示例,可以使代碼更具體。
您可以使用 Pandas pivot
根據列值重塑數據。 由於並非每個用戶都對每部電影進行了評分,因此結果可能包含NaN
s(由 Pandas 轉換為float
類型)。 如果你想將結果轉換為int
你可以 append .fillna(0).astype(int)
在pivot
function 的末尾。
樣本 df
User_ID Movie_ID Rating
0 131 38552 4
1 203 38552 4
2 50 38552 1
3 585 95894 1
4 138 94611 4
5 632 73111 0
6 328 95894 0
7 461 73111 0
8 924 73111 3
...
...
Pivot function
df_new = df.pivot(index='User_ID', columns='Movie_ID', values='Rating').fillna(0).astype(int)
print(df_new)
Movie_ID 193846 38552 73111 83641 93843 94611 95894
User_ID
7 0 0 2 0 0 0 0
43 0 0 0 0 0 0 0
50 0 1 0 0 0 0 0
85 0 0 0 0 0 0 0
131 0 4 0 0 0 0 0
138 0 0 0 0 0 4 0
145 0 0 4 0 0 0 0
156 0 0 4 0 0 0 0
195 0 0 3 0 0 0 0
203 0 4 0 0 0 0 0
209 0 0 0 0 0 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.