Выполнение побитовых операций на фрейме данных

У меня есть такой панда данных

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

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

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

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

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

1 ответ

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

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

Pandas зависит от numpy, поэтому вы должны уже установить его.

licensed under cc by-sa 3.0 with attribution.