Python如何修复';ValueError:尝试获取空序列的argmin';关于分组对象
''' 我正试图基于df.groupby('Chrom')对象上的'Position'列创建容器。 我在代码的最后一部分上苦苦挣扎了几个小时。脚本的目的是为groupby对象的每个组检索最低的pvalue(p)。 df_lowestP=data.loc[data.groupby('Bin_labels')['p'].idxmin()]引发了以下错误“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标签是分
您的
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