Python如何修复';ValueError:尝试获取空序列的argmin';关于分组对象

Python如何修复';ValueError:尝试获取空序列的argmin';关于分组对象,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,''' 我正试图基于df.groupby('Chrom')对象上的'Position'列创建容器。 我在代码的最后一部分上苦苦挣扎了几个小时。脚本的目的是为groupby对象的每个组检索最低的pvalue(p)。 df_lowestP=data.loc[data.groupby('Bin_labels')['p'].idxmin()]引发了以下错误“ValueError:尝试获取空序列的argmin” 我不知道如何识别空序列以及如何进行排序。 提前谢谢你帮了我的忙 ''' 您的Bin\u标签是分

''' 我正试图基于df.groupby('Chrom')对象上的'Position'列创建容器。 我在代码的最后一部分上苦苦挣扎了几个小时。脚本的目的是为groupby对象的每个组检索最低的pvalue(p)。 df_lowestP=data.loc[data.groupby('Bin_labels')['p'].idxmin()]引发了以下错误“ValueError:尝试获取空序列的argmin” 我不知道如何识别空序列以及如何进行排序。 提前谢谢你帮了我的忙

'''


您的
Bin\u标签是分类类型。它包括值为NaN的其他箱子。因此,您得到了空序列。当您按
Bin_标签进行分组时,您会丢失原始索引

要解决这个问题,我们必须保存原始索引,按
Bin_标签
p
对数据进行排序,按
Bin_标签
分组,并获取第一个条目。不确定这是否是最好的解决方案

data['idx'] = data.index
data = data.sort_values(['Bin_labels', 'p'])
idx = data.groupby('Bin_labels').first()['idx'].dropna()
df_lowestP = data.loc[idx]
这是第二组

原件:

Name: idx, dtype: float64
   Chrom  Position                   Marker Bin_labels       Bin_range         p  idx
31    1B      0.00         Kukri_c44369_131      Bin_1   (-0.001, 5.0]  0.311861   31
5     1B     56.92            BS00023044_51     Bin_12    (55.0, 60.0]  0.793592    5
6     1B     82.21    Excalibur_c60931_1260     Bin_17    (80.0, 85.0]  0.104080    6
42    1B     80.30         Kukri_c5335_2165     Bin_17    (80.0, 85.0]  0.567402   42
40    1B    128.64      Excalibur_c8585_701     Bin_26  (125.0, 130.0]  0.103269   40
39    1B    126.13  wsnp_Ku_c18881_28259811     Bin_26  (125.0, 130.0]  0.653104   39
20    1B    148.60         RAC875_c9082_267     Bin_30  (145.0, 150.0]  0.992387   20
最低:

     Chrom  Position                 Marker Bin_labels       Bin_range         p  idx
31.0    1B      0.00       Kukri_c44369_131      Bin_1   (-0.001, 5.0]  0.311861   31
5.0     1B     56.92          BS00023044_51     Bin_12    (55.0, 60.0]  0.793592    5
6.0     1B     82.21  Excalibur_c60931_1260     Bin_17    (80.0, 85.0]  0.104080    6
40.0    1B    128.64    Excalibur_c8585_701     Bin_26  (125.0, 130.0]  0.103269   40
20.0    1B    148.60       RAC875_c9082_267     Bin_30  (145.0, 150.0]  0.992387   20

如果您没有提供输入和预期输出(无图像!)的最小可复制示例,您的问题可能不会得到回答:是的,您是对的。我刚刚编辑了我的帖子,以使错误重现。谢谢
     Chrom  Position                 Marker Bin_labels       Bin_range         p  idx
31.0    1B      0.00       Kukri_c44369_131      Bin_1   (-0.001, 5.0]  0.311861   31
5.0     1B     56.92          BS00023044_51     Bin_12    (55.0, 60.0]  0.793592    5
6.0     1B     82.21  Excalibur_c60931_1260     Bin_17    (80.0, 85.0]  0.104080    6
40.0    1B    128.64    Excalibur_c8585_701     Bin_26  (125.0, 130.0]  0.103269   40
20.0    1B    148.60       RAC875_c9082_267     Bin_30  (145.0, 150.0]  0.992387   20