对数据帧执行按位运算

时间:2014-10-28 13:17:08

标签: python pandas binary dataframe

我有像这样的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位?

转换后,我将对这些值执行一些按位和/或操作,并生成新的数据帧。

1 个答案:

答案 0 :(得分:4)

如果要操作这些位,则无需先转换它们。只需在数据框的列上使用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

Pandas取决于numpy,所以你应该已经安装了它。