Tho*_*ale 5 python dataframe pandas
我有下表:
Item number | crit_A | crit_B|
------------|--------|-------|
1 | 100 | 20 |
1 | 10 | 100 |
1 | 50 | 50 |
2 | 10 | 100 |
2 | 90 | 10 |
2 | 90 | 10 |
Run Code Online (Sandbox Code Playgroud)
我想要一个熊猫数据框操作只返回第一行和第五行。这对应于给定项目的 crit_A 为最大值的行。
Item number | crit_A | crit_B|
------------|--------|-------|
1 | 100 | 20 |
2 | 90 | 10 |
Run Code Online (Sandbox Code Playgroud)
注意:当 crit_A 对给定项目有多个相等的值时,我只需要返回一个项目。
以下不是我要找的:
res_82_df.groupby(['Item number']).max()
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它会按项目编号分组但返回所有列的最大值。另请注意:我可以查找任意阈值并执行查询语句。但这种方法也不够稳健,因为我总是需要查看数据并做出价值判断。
我如何有效地完成这项工作?
注意:我的问题确实是上面链接的问题的重复。不过,这里的答案非常独特且简洁得多,并且按照我的要求执行。
我会这样做:
In [107]: df.loc[df.groupby('Item number')['crit_A'].idxmax()]
Out[107]:
Item number crit_A crit_B
0 1 100 20
4 2 90 10
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2668 次 |
| 最近记录: |