2014-10-28 10 views
2

에 비트 연산을 수행 내가 바이너리 32 비트이 값을 변환 할이dataframe

In [7]: 

XYZ 

Out[7]: 

0  8495872 
1  8496128 
2  8561408 
3  8561664 
4  8626944 
5  8627200 
6  8692736 
7  8692992 
8  8693248 
9  8693504 
10 8758016 
11 8758272 
12 8758528 
13 8758784 
14 8759040 
15 8823296 
16 8823552 
17 8823808 
18 8824064 
19 8824320 
20 8824576 
21 8824832 
22 8888832 
23 8890112 
Name: XYZ, dtype: int64 

같은 팬더 dataframe 있습니다. I는 XYZ.apply (BIN) 함수를 시도했지만 거기에 앞이 불필요한 '0B는'이고 출력이 24 비트이다

0  0b100000011010001100000000 
1  0b100000011010010000000000 
2  0b100000101010001100000000 
3  0b100000101010010000000000 
... 

같은 것을 제공한다. 앞에 '0b'부분이 없으면이 값을 32 비트로 변환하는 방법은 무엇입니까?

변환 후에는 해당 값으로 비트 단위 및/또는 연산을 수행하고 새 데이터 프레임을 생성합니다.

+0

변환 후, 당신은 그들과 무엇을 할 것입니까? 사용자에게 선물 할 예정입니까, 아니면 비트 조작을 할 예정입니까? – parchment

+1

나는 비트와/또는 비트와 함께 연산을하고 새로운 데이터 프레임을 생성하려고한다. –

답변

4

비트를 조작하려는 경우 먼저 비트를 변환 할 필요가 없습니다. 단순히 dataframe의 컬럼에 bitwise_andbitwise_or NumPy와 함수를 사용 : 당신이 이미 설치되어 있어야하므로

In [14]: import numpy as np 

In [15]: df['col'] 
Out[15]: 
0  5302274 
1  4767983 
2  6158485 
3  9807950 
4  4360582 
5  2156122 
... 

In [16]: np.bitwise_and(df['col'], 0b101010) 
Out[16]: 
0  2 
1  42 
2  0 
3  10 
4  2 
5  10 

팬더는 NumPy와에 따라 달라집니다.