繁体   English   中英

将 int 转换为二进制

[英]Convert int to binary

我有一个 pandas 数据框,其中列的内容是整数。 但是,这些整数是从 a.txt 文件中读取的,实际上代表二进制数字。

例如,假设其中一个条目是

0011

小数 = 3

在我的表中,“0011”存储为“int64”类型。 我想将其转换为它所代表的二进制的十进制,并且我需要对某些列中的所有条目执行此操作,我该如何处理这个问题?

由于列的内容是整数而不是字符串,所以int(i, 2) function 不能直接在 integer i 上使用,否则会报错。 例如

int(11, 2)
TypeError: int() can't convert non-string with explicit base

您必须首先将列转换为字符串,然后将字符串转换为十进制值。 例如,假设列 'val',使用代码:

df['val'] = df['val'].astype(str).map(lambda x: int(x, 2))
  1. astype(str)将列类型转换为字符串,然后

  2. map()中使用int() function 应用于列中的每个元素

测试代码和output:

data = { 'val': [11, 101, 1001, 1101]}
df = pd.DataFrame(data)
print(df)
                
Output:  (before conversion)    

                 val
            0     11
            1    101
            2   1001
            3   1101
        
df['val'] = df['val'].astype(str).map(lambda x: int(x, 2))
print(df)
        
Output:  (after conversion)
        
            val
        0     3
        1     5
        2     9
        3    13

您可以将intbase设置为 2 一起使用。

例子:

>>> int('0011', 2)
3
from functools import partial

bin_to_int = partial(int, base=2)
s = pd.Series(['0011', '101', '1010'])
s.apply(bin_to_int)

0     3
1     5
2    10
dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM