【问题标题】:Pandas: Find max value in column and print its row熊猫:在列中查找最大值并打印其行
【发布时间】:2025-12-29 22:50:16
【问题描述】:

我需要在xrb 列中找到最大值并打印这一行(datetimexra,最大值(xrb)。

这是我的df 数据:

                datetime           xra           xrb
1020 2016-02-21 17:00:00  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:01  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:02  1.000000e-09  2.380000e-07
1021 2016-02-21 17:01:00  1.080000e-09  2.370000e-07
1022 2016-02-21 17:02:00  1.000000e-09  2.350000e-07
1023 2016-02-21 17:03:00  1.000000e-09  2.340000e-07
1024 2016-02-21 17:04:00  1.000000e-09  2.330000e-07
1025 2016-02-21 17:05:00  1.000000e-09  2.330000e-07

我使用了这个代码:

print list(df.loc[df['xrb'].idxmax()])

但我只得到列表['datetime','xra','xrb']

有什么建议吗?

【问题讨论】:

  • 你想要的输出是什么?
  • 你好,伙计...我需要日期时间、xra 和整列中 xrb 的最大值所在的行列表...它可以是 xrb 列中相同的最大值,我需要最后一个最大值
  • 或许你可以试试print list(df.loc[df['xrb'][::-1].idxmax()])
  • 同样...我只得到 ['datetime', 'xra', 'xrb'] 但没有值
  • 问题出在您的索引中。

标签: python pandas max dataframe


【解决方案1】:

你可以试试idxmax的倒置df by [::-1]:

print df
                datetime           xra           xrb
1018 2016-02-21 17:00:00  1.000000e-09  2.380000e-07
1019 2016-02-21 17:00:01  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:02  1.000000e-09  2.380000e-07
1021 2016-02-21 17:01:00  1.080000e-09  2.370000e-07
1022 2016-02-21 17:02:00  1.000000e-09  2.350000e-07
1023 2016-02-21 17:03:00  1.000000e-09  2.340000e-07
1024 2016-02-21 17:04:00  1.000000e-09  2.330000e-07


print list(df.loc[df['xrb'][::-1].idxmax()])
[Timestamp('2016-02-21 17:00:02'), 1.0000000000000001e-09, 2.3800000000000001e-07]

编辑:

如果您有重复索引,请尝试查找所有行:

print df
                datetime           xra           xrb
1020 2016-02-21 17:00:00  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:01  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:02  1.000000e-09  2.380000e-07
1021 2016-02-21 17:01:00  1.080000e-09  2.370000e-07
1022 2016-02-21 17:02:00  1.000000e-09  2.350000e-07
1023 2016-02-21 17:03:00  1.000000e-09  2.340000e-07
1024 2016-02-21 17:04:00  1.000000e-09  2.330000e-07

print df[df['xrb'] == df['xrb'].max()]
                datetime           xra           xrb
1020 2016-02-21 17:00:00  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:01  1.000000e-09  2.380000e-07
1020 2016-02-21 17:00:02  1.000000e-09  2.380000e-07

【讨论】:

  • 我如何找到最后一个最大值?
  • 我让它打印 df[df['xrb'] == df['xrb'][::-1].max()]
  • 我有下一个问题...我不知道如何将其列出...打印列表(df[df['xrb'] == df['xrb'].max() ]) 再次显示 ['datetime', 'xra', 'xrb']。
  • 首先我检查最后一个最大值 - 为我工作 print df[df['xrb'] == df['xrb'].max()][::-1].reset_index(drop=True).ix[0,:] 如果你需要 list,请尝试 print df[df['xrb'] == df['xrb'].max()][::-1].reset_index(drop=True).ix[0,:].tolist()
  • Aha koukal jsem ze jsi z bratislavy...muzeme po nasem?