如何将pandas DataFrame中的值二进制化?
我有以下数据框:如何将pandas DataFrame中的值二进制化?
df = pd.DataFrame(['Male','Female', 'Female', 'Unknown', 'Male'], columns = ['Gender'])
我想将其转换为与列“男”,“女”和“未知”值0和1表示性别一个数据帧。
Gender Male Female Male 1 0
Female 0 1
.
.
.
.
为此,我编写了一个函数并使用map调用函数。
def isValue(x , value): if(x == value):
return 1
else:
return 0
for value in df['Gender'].unique():
df[str(value)] = df['Gender'].map(lambda x: isValue(str(x) , str(value)))
这是完美的。但有没有更好的方法来做到这一点?我可以使用sklearn包中的任何内置函数吗?
回答:
是的,有一个更好的方法来做到这一点。这就是所谓的pd.get_dummies
pd.get_dummies(df)
要复制你有什么:
order = ['Gender', 'Male', 'Female', 'Unknown'] pd.concat([df, pd.get_dummies(df, '', '').astype(int)], axis=1)[order]
回答:
我的选择是pd.get_dummies()
。是的,有sklearn方法。
从文档:
>>> from sklearn.preprocessing import OneHotEncoder >>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
OneHotEncoder(categorical_features='all', dtype=<... 'float'>,
handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
以上是 如何将pandas DataFrame中的值二进制化? 的全部内容, 来源链接: utcz.com/qa/257915.html