[![enter image description here](https://i.stack.imgur.com/jkk4i.png)](https://i.stack.imgur.com/jkk4i.png)

I have a dataframe of 51 rows and 464 columns , the columns contain 1's and 0's. I want to have a encoded value of the hex as you see in the attached picture.

I was trying to use numpy to make the hex conversion but it would fail

```
df = pd.DataFrame(np.random.randint(0,2,size=(51, 464)))
#converting into numpy for easier shifting
a = df.values
b = a.dot(2**np.arange(a.size)[::-1])

```

I want to have every 4 columns grouped to produce the hexadecimal value and then if there are odd columns for ex: 463 instead of 464 then the trailing hexadecimal will be padded with zero or zeroes based on how many ever needed to make the full hexadecimal value

This code only works for 64 bits length and then fails.
I was following this example
[binary0|1 to hex string](https://stackoverflow.com/questions/41069825/convert-binary-01-numpy-to-integer-or-binary-string)

any suggestions on how to do this?