2017-07-20 88 views
-2

是否有人知道如何将十进制值的二进制转换分离为一个csv文件?我将把十进制格式(3,4,5)中的三个数字转换为二进制格式,并在将分类器应用于数据集之前考虑每个零和一个特征。例如,如果我们将'3'转换为二进制,则格式将为'11'。我想将'11'中的每一个彼此分开,并考虑作为机器学习方法的两个特征。在读完熊猫数据集之后,我如何在python中做到这一点?十进制到熊猫二进制

+0

https://stackoverflow.com/quest离子/ 699866/python-int-to-binary – WNG

+0

为什么有两个功能? 4和5包含三个二进制数字。 – fuglede

+0

我的意思是'3'有两个特点! – user8034918

回答

0

设置:

In [179]: df = pd.DataFrame({'Col' : np.random.choice([3, 4, 5], 10)}); df 
Out[179]: 
    Col 
0 5 
1 5 
2 3 
3 5 
4 3 
5 3 
6 5 
7 4 
8 3 
9 5 

您可以使用df.apply并通过bin的功能:

In [180]: df.Col.apply(lambda x: pd.Series(list(bin(x)[2:]))).fillna('') 
Out[180]: 
    0 1 2 
0 1 0 1 
1 1 0 1 
2 1 1 
3 1 0 1 
4 1 1 
5 1 1 
6 1 0 1 
7 1 0 0 
8 1 1 
9 1 0 1 
+0

@COLDSPEED我知道如何转换二进制文件!我想知道我怎样才能将每一个零彼此分隔开来,这样他们每个人都可以被认为是独立的功能! – user8034918

+0

@ user8034918好的,理解。编辑。 –

+0

@COLDSPEED你能告诉我为什么你在bin(x)之后放置了[2:]? – user8034918

0

正如评论所说,我不明白为什么会有两个,不三,在输入“3”的情况下的功能,但忽略这种情况,但是忽略该功能,

In [1]: df = pd.DataFrame({'value': np.random.choice([3, 4, 5], 1000)}) 

In [2]: df['a'] = df['value'] != 3 

In [3]: df['b'] = df['value'] == 3 

In [4]: df['c'] = df['value'] != 4 

In [5]: df.astype(int).head(10) 
Out[5]: 
    value a b c 
0  4 1 0 0 
1  4 1 0 0 
2  3 0 1 1 
3  4 1 0 0 
4  3 0 1 1 
5  5 1 0 1 
6  3 0 1 1 
7  5 1 0 1 
8  3 0 1 1 
9  4 1 0 0