Pandas执行drop按列删除时报KeyError:['lead_snp']不存在于轴上问题求助
错误原因
- 调用
groupby("lead_snp")时,Pandas默认会将分组字段lead_snp设为结果的行索引,不再作为普通列保留在DataFrame的列集合中 - 执行
nunique()后得到的结果仅包含各个Set_*统计列,不存在名为lead_snp的列,因此执行drop("lead_snp", axis=1)时触发KeyError
解决方案
根据使用场景可任选以下方案:
- 方案1:分组时指定
as_index=False,让lead_snp保留为普通列后再执行删除操作
示例代码:lead_chrom_only_df.groupby("lead_snp", as_index=False).nunique().drop("lead_snp", axis=1) - 方案2:直接指定分组后仅对数值列统计唯一值,不需要额外删除操作
示例代码:# 取除了lead_snp之外的所有列做nunique统计 lead_chrom_only_df.groupby("lead_snp")[lead_chrom_only_df.columns.drop('lead_snp')].nunique() - 方案3:如果不需要保留
lead_snp的取值,直接对统计结果重置索引即可
示例代码:lead_chrom_only_df.groupby("lead_snp").nunique().reset_index(drop=True)
内容的提问来源于stack exchange,提问作者gokberk
相关产品推荐
相关产品推荐

