python - 对数据帧执行按位运算

标签 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 位。 如何将这些值转换为 32 位且前面没有“0b”部分?

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

最佳答案

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

关于python - 对数据帧执行按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26609363/

相关文章:

c - 向后打印无符号字符的二进制表示形式?

php - 如何为网站编写高效的点击计数器

python - django 包和 python 库有什么区别?

python - 3 用 Numpy 输入逻辑或 where

python - 如何在 python 中分配最旧的列

c# - 如何将二进制转换为字符串?

java - Java 中从字符串到 ASCII 到二进制再到 ASCII 到字符串

c++ - 使用 Python 在 OpenCV 中解析 XML 或 YML

python - 实现自定义弹出 tkinter 对话框的正确方法

python - "by = lambda x: lambda y: getattr(y, x)"是什么意思?