首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将dataset的所有列转换为二进制(0或1)

将dataset的所有列转换为二进制(0或1)
EN

Stack Overflow用户
提问于 2019-11-08 02:10:13
回答 2查看 445关注 0票数 0

数值数据的二进制转换

我是python的新手。我正在尝试仅以0和1的形式获得输出。不像00001等。我试图在输出中将特征中的值0保留为0,并在数据集的所有列中将大于0的值替换为1。我正在对我的数据集进行预处理。我被这部分卡住了。我已经将名义特征转换为二进制特征了。我正在使用NSLKDD数据集。

代码语言:javascript
运行
复制
df = pd.DataFrame(dataset)
df.iloc[:,0:] = pd.to_numeric(df.iloc[:, 0:])
print(df)

尝试写下函数,但无法理解如何继续:

代码语言:javascript
运行
复制
def numericalTobinary (datset):
  if (datset > 0):  
    datset.iloc[:,0:]=1
  else:
    datset.iloc[:,0:]=0
EN

回答 2

Stack Overflow用户

发布于 2019-11-08 02:44:18

你不需要为此创建一个函数。您可以使用df > 0创建数据帧的布尔版本,然后使用astype将布尔值转换为整数(1和0):

代码语言:javascript
运行
复制
binary_df = (df > 0).astype(int)
票数 0
EN

Stack Overflow用户

发布于 2019-11-08 02:44:18

试试这个:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

a = pd.DataFrame(np.array([[1, 0],[2, 20],[3, 0],[5, 100]]))
print(a)

a.loc[a[1]>0, 1]= 1
print(a)

之前的输出:

代码语言:javascript
运行
复制
   0    1
0  1    0
1  2   20
2  3    0
3  5  100

输出在以下位置之后:

代码语言:javascript
运行
复制
   0  1
0  1  0
1  2  1
2  3  0
3  5  1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58754719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档