查找并返回最大值的行和最大值的行作为数组

时间:2019-07-17 17:23:53

标签: python python-3.x pandas numpy

我正在使用熊猫数据框来尝试查找最大值。我需要返回列的最大值以及找到该最大值的行。例如,我的数据框如下所示:

       0    1    2
0     43   36   33
1     43   36   33
2     43   36   33
3     43   36   33
4     43   36   33
5     43   36   33
6    174  168  165
7    161  153  140
8    141  132  129
9    124  107  111
10   130  106  109
11   120   98  101

我想返回找到最大值的每一列和每一行的最大值,如下所示:

0   174   6
1   168   6
2   165   6

我用过:

for column in df:
##    finds the max in each column
    df_max=np.amax(df,axis=0)

获得:

0   174
1   168
2   165

但是,我还没有找到获取行值的方法。

我用过:

for column in df:
    row_df-df[df==np.amax(df,0)]

row_df=row_df.dropna(0,how='all')
print("row_df:")
print(row_df)

row_df_index=row_df.index.values
print("row_df_index")
print(row_df_index)

获得:

row_df:
       0    1    2
6     174   168   165

row_df_index:
[6]

但是如果我在其他行中有最大值,则这些将无济于事,因为我需要能够将它们匹配。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

idxmax是一种返回请求轴上第一次出现最大值的索引的方法。

因此您可以使用agg来汇总结果:

df.agg(['max', 'idxmax'])

返回:

          0    1    2
max     174  168  165
idxmax    6    6    6

如果您需要将maxidxmax作为列,请使用transpose

df.agg(['max', 'idxmax']).transpose()

给出:

   max  idxmax
0  174       6
1  168       6
2  165       6