【发布时间】:2023-03-31 10:37:02
【问题描述】:
我想对整个列而不是每一列的 pandas 数据帧进行一次热编码。
如果有如下数据框:
df = pd.DataFrame({'A': ['A1', 'A1', 'A1', 'A1', 'A4', 'A5'], 'B': ['A2', 'A2', 'A2', 'A3', np.nan, 'A6], 'C': ['A4', 'A3', 'A3', 'A5', np.nan, np.nan]})
df =
A B C
0 A1 A2 A4
1 A1 A2 A3
2 A1 A2 A3
3 A1 A3 A5
4 A4 NaN NaN
5 A5 A6 NaN
我想像下面这样编码:
df =
A1 A2 A3 A4 A5 A6
0 1 1 0 1 0 0
1 1 1 1 0 0 0
2 1 1 1 0 0 0
3 1 0 1 0 1 0
4 0 0 0 1 0 0
5 0 0 0 0 1 1
但是,如果我编写如下代码,结果如下:
df = pd.get_dummies(df, sparse=True)
df =
A_A1 A_A4 A_A5 B_A2 B_A3 B_A6 C_A3 C_A4 C_A5
0 1 0 0 1 0 0 0 1 0
1 1 0 0 1 0 0 1 0 0
2 1 0 0 1 0 0 1 0 0
3 1 0 0 0 1 0 0 0 1
4 0 1 0 0 0 0 0 0 0
5 0 0 1 0 0 1 0 0 0
如何对整列进行一次热编码? 如果我使用前缀 = '',它还会生成 _A1 _A4 _A5 _A2 _A3 _A6 _A3 _A4 _A5 等列。 (我希望使用 pandas 或 numpy 库来编写代码,而不是 for-loop naive 代码,因为我的数据非常庞大;16000000 行,因此迭代 for-loop naive 代码需要很长的计算时间。
【问题讨论】: