You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Pandas数据框整数列编码为带前导零的16位二进制列

嘿,这个需求我刚好帮别人解决过,给你两个实用的方案,轻松搞定把整数转成16位二进制拆分列的问题!

方法一:字符串格式化法(直观易理解)

这种方法用字符串格式化把整数转成16位二进制,再拆分每一位,非常适合快速上手:

import pandas as pd

# 先构造示例数据(替换成你自己的DataFrame即可)
df = pd.DataFrame({'num': [20, 5, 33000]})

# 把每个数字转成16位二进制字符串,拆成单个字符后转成整数列
binary_df = df['num'].apply(
    lambda x: pd.Series(list(f"{x:016b}")).astype(int)
)

# 给新列命名,对应从高位到低位的16个bit(bit_15是最高位,bit_0是最低位)
binary_df.columns = [f'bit_{i}' for i in range(15, -1, -1)]

# 合并原数据和二进制列
final_df = pd.concat([df, binary_df], axis=1)

print(final_df)

运行后,你会看到num=20对应的16列就是0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,完全符合你的要求!

方法二:位运算法(高效适合大数据)

如果你的数据集很大,位运算的向量化操作会比apply快很多,原理是通过移位和按位与来提取每一位的值:

import pandas as pd

df = pd.DataFrame({'num': [20, 5, 33000]})

# 循环生成16个bit列,从高位到低位
for bit_pos in range(15, -1, -1):
    # 右移bit_pos位后取最后一位,得到该bit的值
    df[f'bit_{bit_pos}'] = (df['num'] >> bit_pos) & 1

print(df)

这个方法不需要处理字符串,直接对数值进行运算,性能更优,百万级数据也能轻松处理。

注意事项

  • 确保你的整数范围在0~65535之间(16位无符号整数的最大值),如果超过这个范围,16位二进制会溢出,需要提前做截断或过滤处理。
  • 如果你想让列的顺序从低位到高位,只需要把循环的range(15, -1, -1)改成range(0, 16)就行,对应命名为bit_0到bit_15。

内容的提问来源于stack exchange,提问作者Mridula Gunturi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:51:13