[英]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))
astype(str)
将列类型转换为字符串,然后
在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
您可以将int
与base
设置为 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.