0

我的数据框是:

                                               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

4

3 回答 3

1
self.models[self.models['loss'] == self.models['loss'].min()]

将为您提供最低损失的行(只要 self.models 是您的 df)。添加 .index 以获取索引号。

于 2019-04-11T19:16:36.517 回答
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()]
于 2019-04-11T19:26:54.533 回答
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 比条件要快得多。

sort_values 花费的时间和条件与数据框中的行数

于 2019-04-11T19:31:11.787 回答