首页 > 解决方案 > 使用 pandas 确定列对于特定组具有最低值的次数

问题描述

       Experiment  Source    RMSE
0    Experiment 10   sat8   931.453756
1    Experiment 10   sat8   861.855506
2    Experiment 10   sat8   859.305796
3    Experiment 10   sat8   655.863104
4    Experiment 10   sat8   935.915268
..            ...         ...          ...
571  Experiment 27  nel1   807.975352
572  Experiment 27  nel1  1146.975889
573  Experiment 27  nel1  1005.450225
574  Experiment 27  nel1   967.833854
575  Experiment 27  nel1   793.703938

我想处理上面的数据框以查找 a对给定SourceRMSE最小值的次数Experiment。结果应该是这样的:对于任何给定Experiment的,只有一个Source可以具有最小的 RMSE,因此任何给定的列总和为 1。

sat8    0                        0 
nel1    1                        1
    Experiment 10 ....      Experiment 27

我尝试使用数据透视表,但不确定如何确定给定的Source最少RMSEExperiment

标签: pythonpandas

解决方案


使用get_dummieswith表示每组按列DataFrameGroupBy.idxmin的最小索引 ( ):SourceRMSE

df2 = (pd.get_dummies(df.set_index('Source')
                        .groupby('Experiment')['RMSE']
                        .idxmin()
         ).T

         )
print (df2)
Experiment  Experiment 10  Experiment 27
nel1                    0              1
sat8                    1              0

详情

print (df.set_index('Source').groupby('Experiment')['RMSE'].idxmin())
Experiment
Experiment 10    sat8
Experiment 27    nel1
Name: RMSE, dtype: object

推荐阅读