我有像这样的pandas数据框
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位。 如何在没有'0b'部分的情况下将这些值转换为32位?
转换后,我将对这些值执行一些按位和/或操作,并生成新的数据帧。
答案 0 :(得分:4)
如果要操作这些位,则无需先转换它们。只需在数据框的列上使用bitwise_and
和bitwise_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
Pandas取决于numpy,所以你应该已经安装了它。