Aks*_*waj 2 python encoding pandas scikit-learn
我有一个以字符串格式存储的真/假值的数据框。数据框中的某些值为空。
我需要对这些数据进行编码,以便 TRUE/FALSE/null 值在每一列中都使用相同的整数进行编码。
输入:
col1 col2 col3
True True False
True True True
null null True
Run Code Online (Sandbox Code Playgroud)
我在用:
le = preprocessing.LabelEncoder()
df.apply(le.fit_transform)
Run Code Online (Sandbox Code Playgroud)
输出:
2 1 0
2 1 1
1 0 1
Run Code Online (Sandbox Code Playgroud)
但我希望输出为:
2 2 0
2 2 2
1 1 2
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
对我来说,创建一列DataFrame
:
df = df.stack(dropna=False).to_frame().apply(le.fit_transform)[0].unstack()
print (df)
col1 col2 col3
0 1 1 0
1 1 1 1
2 2 2 1
Run Code Online (Sandbox Code Playgroud)
另一个想法是利用DataFrame.replace
与'True'
替代True
,这是因为:
我有一个以字符串格式存储的真/假值的数据框。
如果null
是缺失值:
df = df.replace({'True':2, 'False':1, np.nan:0})
Run Code Online (Sandbox Code Playgroud)
如果null
是字符串null
:
df = df.replace({'True':2, 'False':1, 'null':0})
print (df)
col1 col2 col3
0 2 2 1
1 2 2 2
2 0 0 2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
101 次 |
最近记录: |