python - 如何从共享两个公共列的一组行中选择一列中具有最大值的熊猫行?
问题描述
下面的 Pandas DataFramedf
有 5 列,有颜色,而索引号在最左边是黑色的。
请注意最后两列(我们称它们为col4
和col5
)具有静态数字,表示数据的段、组或块。其他组(在这两列中更改其静态编号)已从屏幕截图中隐藏。
如何挑出第三列(称为)中具有最大值的行或行的索引,col3
用黑色圈出:1.90977
,条件是最后两行是静态的?换句话说,挑出组中最好的行
寻找这样的东西,这是行不通的:
df.loc[(df['col3'] == 0.999141) & (df['col4'] == 0.000861559)]
解决方案
如果不是最后 2 列具有相同的值,则以某种精度用于选择列,也可以通过掩码和列名numpy.isclose
更好地选择性能:DataFrame.loc
df.loc[np.isclose(df['col4'], 0.999141) & np.isclose(df['col5'], 0.000861559), 'col3'].max()
对于最大值使用索引Series.idxmax
:
df.loc[np.isclose(df['col4'], 0.999141) & np.isclose(df['col5'], 0.000861559), 'col3'].idxmax()
按最大col4
和最小col5
用途选择:
df.loc[df['col4'].eq(df['col4'].max()) & df['col5'].eq(df['col5'].min()), 'col3'].max()
df.loc[df['col4'].eq(df['col4'].max()) & df['col5'].eq(df['col5'].min()), 'col3'].idxmax()
推荐阅读
- excel - VBA:如果范围等于任何列表框选择
- javascript - 不要在不接受的文件上更改输入文件文本
- java - 奇怪的是找不到符号“@IntDef”,但 AndroidStudio 没有显示错误
- microsoft-graph-api - Microsoft one note graph api 不包括最近创建的页面
- javascript - 引导 jQuery 字段未对齐和格式化
- python - 通过回调用新行更新破折号数据表
- angular - 如何从角度解决CORS Origin错误
- python - 在 Python 中比较字典的键并提取相应的值
- odbc - BizTalk 2013 R2 通过 ODBC 连接到 Sybase 数据库(两个连接和 CDATA)
- c++ - QT C++ GUI 应用发布不播放视频