gpt4 book ai didi

python - 将整数 pandas 数据帧列编码为填充的 16 位二进制

转载 作者:行者123 更新时间:2023-11-30 22:16:52 24 4
gpt4 key购买 nike

我想将 pandas 数据帧列中存储的整数编码为相应的 16 位二进制数,这些二进制数对应于这些整数中的位位置。我还需要为相应二进制数小于 16 位的数字填充前导零。例如,给定一列包含从 0 到 33000 的整数,对于整数值 20(二进制为 10100),我想生成 16 列,其值为 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0 等遍布整列。

最佳答案

设置

考虑带有列'A'的数据框df

df = pd.DataFrame(dict(A=range(16)))

Numpy 广播和位移位

a = df.A.values
n = int(np.log2(a.max() + 1))
b = (a[:, None] >> np.arange(n)[::-1]) & 1

pd.DataFrame(b)

0 1 2 3
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
<小时/>

使用 f 字符串格式化字符串

n = int(np.log2(df.A.max() + 1))

pd.DataFrame([list(map(int, f'{i:0{n}b}')) for i in df.A])

0 1 2 3
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1

关于python - 将整数 pandas 数据帧列编码为填充的 16 位二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49836933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com