【问题标题】:Performing bitwise operations on a dataframe对数据帧执行按位运算
【发布时间】:2014-12-23 22:02:39
【问题描述】:

我有一个这样的熊猫数据框

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' 部分?

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

【问题讨论】:

  • 转换后,你打算如何处理它们?您是要将它们呈现给用户,还是要进行一些位操作?
  • 我将用这些值做一些按位和/或操作并生成一个新的数据帧。

标签: python pandas binary dataframe


【解决方案1】:

如果您要操作这些位,则无需先转换它们。只需在数据框的列上使用 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,所以你应该已经安装了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2019-10-13
    • 2017-06-26
    相关资源
    最近更新 更多