我想将存储在pandas dataframe列中的整数掩码编码为相应的二进制特征,这些二进制特征对应于那些整数中的位位置。 例如,给定4位整数和十进制值11我想在整个列中导出4列,值为1,0,1,1等等。
答案 0 :(得分:3)
您可以使用:
df = pd.DataFrame([list('{0:04b}'.format(x)) for x in df['col']], index=df.index).astype(int)
谢谢@pir for 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:])