#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. Спасибо, у меня есть несколько идентификаторов в моем списке, которых нет в матрице. Как их игнорировать? В противном случае я получаю ошибку ключа.