我的DataFrame是:
model epochs loss
0 <keras.engine.sequential.Sequential object at ... 1 0.0286867
1 <keras.engine.sequential.Sequential object at ... 1 0.0210836
2 <keras.engine.sequential.Sequential object at ... 1 0.0250625
3 <keras.engine.sequential.Sequential object at ... 1 0.109146
4 <keras.engine.sequential.Sequential object at ... 1 0.253897
我想获得loss
最低的行。
我正在尝试self.models['loss'].idxmin()
,但这会导致错误:
TypeError: reduction operation 'argmin' not allowed for this dtype
答案 0 :(得分:1)
@TestMethodOrder(OrderAnnotation.class)
@SpringJUnitWebConfig(locations = { "classpath:service.xml","classpath:data.xml" })
@Tag("1")
public class MyTestTest {
@Autowired
protected CreateUser createUser;
@BeforeEach
public void setUp() throws Exception {
createUser.createTimesheetUser(...)} --> works now
}
将使该行的损失最小(只要self.models是您的df)。添加.index以获取索引号。
答案 1 :(得分:1)
希望这行得通
import pandas as pd
df = pd.DataFrame({'epochs':[1,1,1,1,1],'loss':[0.0286867,0.0286867,0.0210836,0.0109146,0.0109146]})
out = df.loc[df['loss'].idxmin()]
答案 2 :(得分:1)
有很多方法可以做到这一点:
考虑此示例数据框
df
level beta
0 0 0.338
1 1 0.294
2 2 0.308
3 3 0.257
4 4 0.295
5 5 0.289
6 6 0.269
7 7 0.259
8 8 0.288
9 9 0.302
1)使用熊猫条件
df[df.beta == df.beta.min()] #returns pandas DataFrame object
level beta
3 3 0.257
2)使用sort_values并选择第一个(第0个)索引
df.sort_values(by="beta").iloc[0] #returns pandas Series object
level 3
beta 0.257
Name: 3, dtype: object
我猜这些是最易读的方法
编辑:
制作此图以可视化以上两种方法在增加no上花费的时间。数据框中的行数。尽管它很大程度上取决于所讨论的数据帧,但是当行数大于或等于1000左右时,sort_values的速度要比有条件的要快得多。