0

I have a dataframe A of index and column labelled 0 to F (0-15) in hex.

    0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
    0   99  124 119 123 242 107 111 197 48  1   103 43  254 215 171 118
    1   202 130 201 125 250 89  71  240 173 212 162 175 156 164 114 192
    2   183 253 147 38  54  63  247 204 52  165 229 241 113 216 49  21
    3   4   199 35  195 24  150 5   154 7   18  128 226 235 39  178 117
    4   9   131 44  26  27  110 90  160 82  59  214 179 41  227 47  132
    5   83  209 0   237 32  252 177 91  106 203 190 57  74  76  88  207
    6   208 239 170 251 67  77  51  133 69  249 2   127 80  60  159 168
    7   81  163 64  143 146 157 56  245 188 182 218 33  16  255 243 210
    8   205 12  19  236 95  151 68  23  196 167 126 61  100 93  25  115
    9   96  129 79  220 34  42  144 136 70  238 184 20  222 94  11  219
    A   224 50  58  10  73  6   36  92  194 211 172 98  145 149 228 121
    B   231 200 55  109 141 213 78  169 108 86  244 234 101 122 174 8
    C   186 120 37  46  28  166 180 198 232 221 116 31  75  189 139 138
    D   112 62  181 102 72  3   246 14  97  53  87  185 134 193 29  158
    E   225 248 152 17  105 217 142 148 155 30  135 233 206 85  40  223
    F   140 161 137 13  191 230 66  104 65  153 45  15  176 84  187 22

I did dataframe A by this

df_sbox=pd.DataFrame(from_a_2d_nparray)
df_sbox.index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']
df_sbox.columns = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']

I want to select A where index == 0 - F and column == 0 -F and assign it to a 2D matrix.

What can i use for selecting A where "index == 0 - F and column == 0 -F" in 1 statement?

PyPan
  • 25
  • 4
  • [Please avoid images of data/code when posting a question](https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-errors-when-asking-a-question) , images cannot be copied and thus we cant reproduce what you ask – anky Apr 04 '21 at 10:21
  • I dont know how to put a code output from jupyter notebook in an embed manner – PyPan Apr 04 '21 at 10:22
  • [How to make good reproducible pandas examples](https://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – anky Apr 04 '21 at 10:23
  • I changed it. Thanks – PyPan Apr 04 '21 at 10:27
  • the input numbers are in decimal or in hex? – Pablo C Apr 04 '21 at 10:28
  • They are in decimal – PyPan Apr 04 '21 at 10:28

1 Answers1

0

You can use hex with pandas.DataFrame.loc:

num1 = 10 #row 'A' in hex
num2 = 3  #column 3

df.loc[hex(num1)[2:].upper(), hex(num2)[2:].upper()]
#10

Explanation

You can use python built-in function hex to get the hex representation of an integer:

hex(12)
#0xc

Since we are not interested in the first two characters, we can omit them slicing the str:

hex(12)[2:] #from index 2 onwards
#c

Since the dataframe uses uppercase for its indices and columns, we can use str.upper to match them:

hex(12)[2:].upper()
#'C'

Additional

You can also get the upper-case hex representation using the Standard Format Specifiers:

"{:X}".format(43)
#2B
Pablo C
  • 4,661
  • 2
  • 8
  • 24
  • May i know what does the -1 and upper() do? – PyPan Apr 04 '21 at 10:41
  • @PyPan wait me a minute, I'll edit the answer – Pablo C Apr 04 '21 at 10:43
  • @PyPan is it clear now? (the -1 which I already changed meant "last character of the string", but it wasn't correct for a more general case, specifically when the number of columns or rows is greater than 15) – Pablo C Apr 04 '21 at 10:53