python - 如何在 pandas 矩阵中搜索值并给出列名称?

标签 python pandas matrix

我是Python和pandas编程的新手,我必须编写一个脚本,当给定一个矩阵时,它会找到最大值并打印该值所在的列名和行名。我已经在这里搜索了答案还有一个类似的问题,但答案对我不起作用:

matrix2 = pd.DataFrame(matrix1, index=row_names, columns=column_names)
print(matrix2)
print(matrix2.values.max())
print((matrix2 == (matrix2.values.max())).idxmax())

这是我到目前为止得到的,我得到的输出是:

            ABC123  DEF456  GHI789  JKL012  MNO057  QRS047
ABC123      40      16      -5       1      -4       1
DEF456      16      38      -5       1      -7       1
GHI789      -5      -5      58      -5      -1      -5
JKL012       1       1      -5      60       5      60
MNO057      -4      -7      -1       5      32       5
QRS047       1       1      -5      60       5      60
60
ABC123    ABC123
DEF456    ABC123
GHI789    ABC123
JKL012    JKL012
MNO057    ABC123
QRS047    JKL012
dtype: object

在这种情况下我想要得到的期望输出是:

JKL012 JKL012
JKL012 QRS047
QRS047 JKL012
QRS047 QRS047

我真的不明白为什么它会给我这样的输出。 任何帮助将不胜感激!

最佳答案

您可以使用DF.stack这样您就可以获得与最大值相对应的行和列值作为创建新数据框的索引,如下所示:

pd.DataFrame(df[df == df.values.max()].stack().index.values.tolist())

enter image description here

关于python - 如何在 pandas 矩阵中搜索值并给出列名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41075352/

相关文章:

python - 如何创建一个空的蓝色图像?

python - 列出表中存在数据或 NULL 的所有组合的算法

python - 在 View 中强制应用程序/json MIME 类型(Flask)

python - Pandas - 在两列中查找具有匹配值的行并在另一列中乘以值

Python有序元组列表按绝对值排序

arrays - MATLAB:检测并删除 2 列矩阵中的镜像对

python - Pandas on Python If-then 命令

Python xlrd.open_workbook 生成错误 : ValueError: invalid literal for int() with base 10: '

c - 正常 block 后检测到堆损坏(#63)

r - 哪个 R 实现提供最快的 JSD 矩阵计算?