如何串联Python Pandas中的位列?

时间:2019-03-08 21:18:51

标签: python pandas

似乎是一个简单的问题,但我遇到了一个奇怪的错误。我有一个包含24个以上都包含1或0的列的大型数据框。我希望将每个字段连接起来以创建一个将用作签名的二进制密钥。

但是,当列数超过12时,整个过程就会崩溃。

a = np.zeros(shape=(3,12))
df = pd.DataFrame(a)
df = df.astype(int)   # This converts each 0.0  into just 0
df[2]=1               # Changes one column to all 1s

#result

    0   1   2   3   4   5   6   7   8   9   10  11
0   0   0   1   0   0   0   0   0   0   0   0   0
1   0   0   1   0   0   0   0   0   0   0   0   0
2   0   0   1   0   0   0   0   0   0   0   0   0

连接功能...

df['new'] = df.astype(str).sum(1).astype(int).astype(str)  # Concatenate
df['new'].apply('{0:0>12}'.format)                         # Pad leading zeros
# result
    0   1   2   3   4   5   6   7   8   9   10  11  new
0   0   0   1   0   0   0   0   0   0   0   0   0   001000000000
1   0   0   1   0   0   0   0   0   0   0   0   0   001000000000
2   0   0   1   0   0   0   0   0   0   0   0   0   001000000000

这很好。但是,如果我将列数增加到13,则会得到...

a = np.zeros(shape=(3,13))
# ...same intermediate steps as above...


    0   1   2   3   4   5   6   7   8   9   10  11  12  new
0   0   0   1   0   0   0   0   0   0   0   0   0   0   00-2147483648
1   0   0   1   0   0   0   0   0   0   0   0   0   0   00-2147483648
2   0   0   1   0   0   0   0   0   0   0   0   0   0   00-2147483648

为什么会收到-2147483648?我期待着0010000000000

感谢您的帮助!

0 个答案:

没有答案