Python 熊猫:如何选择要在groupby结果中显示的列?

Python 熊猫:如何选择要在groupby结果中显示的列?,python,pandas,Python,Pandas,我有一个包含10列的数据框,我想从中列出一些行的列,其中,ROUGE_L按Model最大分组,我尝试了: sdf = df.groupby(['Model','Checkpoint'])['ROUGE_L'].max() 它打印: Model Checkpoint ROUGE_L 4 1005100 0.204 1010200 0.202 1015300 0.205 1020400

我有一个包含10列的数据框,我想从中列出一些行的列,其中,
ROUGE_L
Model
最大分组,我尝试了:

sdf = df.groupby(['Model','Checkpoint'])['ROUGE_L'].max()
 
它打印:

Model  Checkpoint    ROUGE_L
4      1005100       0.204
       1010200       0.202
       1015300       0.205
       1020400       0.203
       1025500       0.204
                     ...  
16000  1030600       0.396
       1035700       0.396
       1040800       0.408
但我希望:

Model  Checkpoint    ROUGE_L
4      1005300       0.205
16000  1040800       0.408

在类似问题中,我没有发现上述陈述。

如果我们正在为每个模型组寻找max ROUGE_L的检查点,那么:

df.set_index('ROUGE_L').sort_index().reset_index().groupby(['Model'], as_index=False).last()
输出

   Model    Checkpoint  ROUGE_L
2   4       1015300     0.205
7   16000   1040800     0.408

如果我们正在为每个模型组寻找max ROUGE_L的检查点,那么:

df.set_index('ROUGE_L').sort_index().reset_index().groupby(['Model'], as_index=False).last()
输出

   Model    Checkpoint  ROUGE_L
2   4       1015300     0.205
7   16000   1040800     0.408

需要更精确的原始数据帧,但下面的代码应该可以工作:

>>> df.loc[df.groupby("Model")["ROUGE_L"].idxmax()]
   Model  Checkpoint  ROUGE_L
2      4     1015300    0.205
7  16000     1040800    0.408
要选择列,请在前面的说明中附加
[[“Model”,“Checkpoint”,“ROUGE_L”]]

>>> df.loc[df.groupby("Model")["ROUGE_L"].idxmax()][["Model", "Checkpoint", "ROUGE_L"]]
   Model  Checkpoint  ROUGE_L
2      4     1015300    0.205
7  16000     1040800    0.408

需要更精确的原始数据帧,但下面的代码应该可以工作:

>>> df.loc[df.groupby("Model")["ROUGE_L"].idxmax()]
   Model  Checkpoint  ROUGE_L
2      4     1015300    0.205
7  16000     1040800    0.408
要选择列,请在前面的说明中附加
[[“Model”,“Checkpoint”,“ROUGE_L”]]

>>> df.loc[df.groupby("Model")["ROUGE_L"].idxmax()][["Model", "Checkpoint", "ROUGE_L"]]
   Model  Checkpoint  ROUGE_L
2      4     1015300    0.205
7  16000     1040800    0.408

如果在同一组中有多个最大值,并且希望检索所有最大值,则可以使用

mask=df.groupby('Model')['ROUGE_L'].apply(lambda group:group==group.max())
df_u2;=df[遮罩]

如果在同一组中有多个最大值,并且希望检索所有最大值,则可以使用

mask=df.groupby('Model')['ROUGE_L'].apply(lambda group:group==group.max())
df_u2;=df[遮罩]

您能解释一下如何从
ROUGE\L
列中获取元素的逻辑吗?抱歉,示例目前不清楚。@RavinderingH13
ROUGE_L
的最大值,您能解释一下如何从
ROUGE_L
列中获取元素的逻辑吗?抱歉,目前样本不清楚。@RavinderingH13胭脂的最大值请阅读我的更新。。。。在您的命令中选择了
检查点
?请注意,这些列可能超过满足条件“ROUGE_L按型号最大分组”的3I select行。很好,但我不想显示其他列,每行仅显示这三列。我想这一定是一个基本的建议,不知道这么复杂!!!!!!!!!别忘了我们不知道你的原始数据帧。。。我们试图猜测并帮助您。建议文章可以帮助您:请阅读我的更新。。。。在您的命令中选择了
检查点
?请注意,这些列可能超过满足条件“ROUGE_L按型号最大分组”的3I select行。很好,但我不想显示其他列,每行仅显示这三列。我想这一定是一个基本的建议,不知道这么复杂!!!!!!!!!别忘了我们不知道你的原始数据帧。。。我们试图猜测并帮助你。建议文章可以帮助你:它必须比这更简单,也请注意颜色比这些…它必须比那更简单,也请注意颜色比这些。。。。