我有一个如下的数据框:
test = {"viral": "pos", "Status": "positive", "Age": 59, "score": 5}
test2 = {"viral": "neg"}
df = pd.DataFrame.from_dict([test, test2])
我想将字符列(病毒、状态)编码为序数,但不要使用数值。所需的输出是具有相同列名的numpy数组。你知道吗
如果我使用sklearn的OrdinalEncoder,它不会处理NaN值。即使没有NaN值,它仍然会对数字列进行顺序编码。我想在字符列中用0填充NaN值,但在数字列中保留NaN。你知道吗
最简单的方法是什么?你知道吗
所需输出(在numpy数组中):
Age Status score viral
0 59.0 1 5.0 1
1 NaN 0 NaN 0
谢谢! 杰克
编辑:在使用enc=OrdinalEncoder()
时,我还需要一个从编码值到原始值的映射,如{i: dict(enumerate(v)) for i, v in enumerate(enc.categories_)}
(参见Vectorize 2D character array column-wise)
使用^{}
为了能够^{} ,您可以创建一个
defaultdict
的LabelEncoders
。key
是您的选择。我建议使用列名:直观和简单到^{}
更新,当有NaN时,它会将代码cat为-1,如果需要NaN,可以使用
replace
转换回来相关问题 更多 >
编程相关推荐