2014-10-28 3 views
2

У меня есть панд dataframe как этотВыполнение битовых операций на 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 

Я хочу, чтобы преобразовать эти значения в 32bit двоичными. Я попробовал функцию XYZ.apply (BIN), но это дает что-то вроде этого

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

есть этот нежелательный «0b» спереди и выход 24 бит. Как получить эти значения, преобразованные в 32 бит без функции '0b' спереди?

После преобразования я собираюсь выполнить некоторые побитовые и/или операции с этими значениями и сгенерировать новый dataframe.

+0

После преобразования, что вы собираетесь с ними делать? Собираетесь ли вы представить их пользователю, или вы собираетесь немного манипулировать? – parchment

+1

Я собираюсь выполнить некоторые побитовые и/или операции с этими значениями и сгенерировать новый dataframe. –

ответ

4

Если вы собираетесь манипулировать битами, вам не нужно их сначала преобразовывать. Просто используйте bitwise_and и bitwise_or Numpy функции на колонке dataframe в:

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, так что вы должны уже установлены.

Смежные вопросы