我的数据集缺少一些数据。我想在执行 pd.get_dummies()
时保持数据中的缺失。
这是一个示例数据集:
Table 1.
someCol
A
B
NA
C
D
我希望 pd.get_dummies(df, dummy_na=True))
将数据转换为如下所示:
Table 2.
someCol_A someCol_B someCol_NA someCol_C someCol_D
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
但是,我想要的是这样的:
Table 3.
someCol_A someCol_B someCol_C someCol_D
1 0 0 0
0 1 0 0
NA NA NA NA
0 0 1 0
0 0 0 1
请注意,第 3 行用 NA 代替了从原始列中分解出来的所有行值。
如何获得表 3 的结果?
最佳答案
有点黑客,但你可以做这样的事情,你只获取非空行的虚拟值,然后通过重新索引结果来将缺失值重新插入到正确的位置根据原始数据帧的索引进行虚拟
pd.get_dummies(df.dropna()).reindex(df.index)
someCol_A someCol_B someCol_C someCol_D
0 1.0 0.0 0.0 0.0
1 0.0 1.0 0.0 0.0
2 NaN NaN NaN NaN
3 0.0 0.0 1.0 0.0
4 0.0 0.0 0.0 1.0
关于python - 如何在数据帧上执行 pd.get_dummies(),同时保留 NA 值而不是创建 NA 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67064941/