2016-04-24 3 views
0

Есть ли способ создать двумерную матрицу с NON числовым индексированием? и БОЛЬШЕ важно GET/SET значения, используя эти не численные индексы?Не численное индексирование в многомерных матрицах (списках)

Я имею в виду, имеющий 2D матрицу, как

mat= 
     one two three 
    A 1 2  3 
    B 4 5  6 

, а затем быть в состоянии SET/GET как

>>>m13=mat[A,three] 
    >>> m13 
    >>> 3 

любая идея сниппет оценена. Я думал об использовании «Панд», но не мог понять.

ответ

3

Вы можете использовать loc:

import pandas as pd 

mat = pd.DataFrame({'three': {'A': 3, 'B': 6}, 
        'two': {'A': 2, 'B': 5}, 
        'one': {'A': 1, 'B': 4}}, 
        columns = ['one','two','three']) 

print mat 
    one two three 
A 1 2  3 
B 4 5  6 

#GET 
print mat.loc['A', 'three'] 
3 

#SET 
mat.loc['A', 'three'] = 10 
print mat 
    one two three 
A 1 2  10 
B 4 5  6 

EDIT:

Вы можете создать DataFrame из numpy array тоже:

print arr 
[[1 2 3] 
[4 5 6]] 

mat = pd.DataFrame(arr, index=['A','B'], columns=['one','two','three']) 
    one two three 
A 1 2  3 
B 4 5  6 
+0

Спасибо за ответ, Не могли бы вы показать, как вы создали 'мат' ? – Rebin

+0

Конечно, ответ редактируется. – jezrael

+0

Благодарим вас за ваше быстрое решение. – Rebin

Смежные вопросы