我有一個看起來像這樣的數據框:A B C34 x a3 y b23 y a40 x b本質上,cols B 和 C 需要成為虛擬變量,帶有標題 B_x、B_y、C_a、C_b。該函數幾乎與 get_dummies() 在 Pandas 中的工作原理完全相同,但有一個主要區別:對于在值為 1 的情況下創建的所有虛擬變量,我需要將值設為 A 列中的值。A B_x B_y C_a C_b34 34 0 34 03 0 3 0 323 0 23 23 040 40 0 0 40我正在處理具有大量類別的相當大的數據。我試過在數據集上使用 get_dummies(),然后使用 df.mask 將所有 1 更改為 df.A,但是這非常慢(大約 10 分鐘)。
1 回答

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
使用pd.get_dummies和廣播欄目A
df2 = pd.get_dummies(df[['B', 'C']]) * df.A.values.reshape([-1,1])
B_x B_y C_a C_b
0 34 0 34 0
1 0 3 0 3
2 0 23 23 0
3 40 0 0 40
要分配 back A,有很多選擇??梢宰鰀f2['A'] = df['A']或使用pd.concat
pd.concat([df.A, df2], axis=1)
添加回答
舉報
0/150
提交
取消