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

时间:2016-12-10 12:09:51

标签: 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

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

1 个答案:

答案 0 :(得分:1)

您可以使用DF.stack,以便将与最大值对应的行和列值作为创建新数据帧的索引,如下所示:

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

enter image description here