Pandas извлекает столбцы и строки по идентификатору из матрицы расстояний

#python #pandas #numpy #dataframe #matrix

#питон #панды #тупой #фрейм данных #матрица

Вопрос:

У меня есть матрица расстояний с идентификаторами в виде имен столбцов и строк:

     A   B  C  D   
A   0   1  2  3
B   1   0  4  5
C   2   4  0  6
D   3   5  6  0
 

Как эффективно извлекать значения из большой матрицы, например, для идентификаторов A и C, чтобы получить эту матрицу:

     A   C    
A   0   2  
C   2   0  
 
 

Редактировать, отсутствующие идентификаторы в матрице следует игнорировать.

Ответ №1:

Используется DataFrame.loc для получения значений по меткам:

 vals = ['A','C']

df = df.loc[vals, vals]
print (df)
   A  C
A  0  2
C  2  0
 

РЕДАКТИРОВАТЬ: если некоторые значения не совпадают и их нужно опустить, добавьте Index.intersection :

 vals = ['J','A','C']

new = df.columns.intersection(vals, sort=False)
df = df.loc[new, new]
print (df)
   A  C
A  0  2
C  2  0
 

Комментарии:

1. Спасибо, у меня есть несколько идентификаторов в моем списке, которых нет в матрице. Как их игнорировать? В противном случае я получаю ошибку ключа.