如何将整数掩码编码为 pandas 中的虚拟变量

How to encode integer masks as bits into dummy variables in pandas

我想将存储在 pandas 数据帧列中的整数掩码编码为对应于这些整数中的位位置的相应二进制特征。 例如,给定 4 位整数和十进制值 11,我想在整个列中导出 4 列,值分别为 1、0、1、1 等等。

您可以使用:

df = pd.DataFrame([list('{0:04b}'.format(x)) for x in df['col']], index=df.index).astype(int)

谢谢@pir python 3.6+ 解决方案:

df = pd.DataFrame([list(f'{i:04b}') for i in df['col'].values], df.index)

Numpy

将数组转换为 DataFrame - 来自 this 答案的解决方案,还添加了每行交换值的切片:

d = df['col'].values
m = 4
df = pd.DataFrame((((d[:,None] & (1 << np.arange(m)))) > 0)[:, ::-1].astype(int))
#alternative
#df = pd.DataFrame((((d[:,None] & (1 << np.arange(m-1,-1,-1)))) > 0).astype(int))

或:

df = pd.DataFrame(np.unpackbits(d[:,None].astype(np.uint8), axis=1)[:,-m:])