首页 > 解决方案 > 选择行和列== 0到F的熊猫数据框

问题描述

我有一个索引和列的数据框A,以十六进制标记为0到F(0-15)。

    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

我通过这个做了数据框A

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']

我想选择 A where index == 0 - F and column == 0 -F 并将其分配给 2D 矩阵。

在 1 条语句中选择“索引 == 0 - F 和列 == 0 -F”的 A 时可以使用什么?

标签: pythonpandas

解决方案


您可以hex使用pandas.DataFrame.loc

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

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

解释

您可以使用 python 内置函数hex来获取整数的十六进制表示:

hex(12)
#0xc

由于我们对前两个字符不感兴趣,我们可以省略它们切片str

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

由于数据框的索引和列使用大写,我们可以使用str.upper它们来匹配它们:

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

额外的

您还可以使用标准格式说明符获取大写十六进制表示:

"{:X}".format(43)
#2B

推荐阅读