python - Pandas 从距离矩阵中按 ID 提取列和行

标签 python pandas numpy dataframe matrix

我有一个以 ID 作为列名和行名的距离矩阵:

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

如何有效地从大型矩阵中提取值,例如为 ID A 和 C 获取此矩阵:

    A   C    
A   0   2  
C   2   0  
 

编辑,矩阵中缺失的 ID 应该被忽略。

最佳答案

使用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

关于python - Pandas 从距离矩阵中按 ID 提取列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65288185/

相关文章:

python - 计算最频繁的值并对其进行操作

python - 构建 kivy 应用程序时出错 : ModuleNotFoundError: No module named 'typing_extensions'

python - 如何从 Firebird 数据库中获取表格列表?

python - 检查并转换多索引类型

python - 查找相邻最大值的numpy数组坐标

python - 试图剥离 b' ' from my Numpy array' s savetxt() 表示

python - 在单次传递数据中使用 pyspark 查找最小值/最大值

最大化列表中相等元素数的 Python 算法

python - 如何将等高线图叠加在 basemap 上

python - 按年月分组并在 Python 中查找前 N 个最小值列