Pandas多索引DataFrame拼接后设置背景渐变报错非唯一索引原因排查
报错原因
你只校验了行索引的唯一性,但Pandas的Styler初始化时会同时校验行索引和列索引的唯一性,只要其中任意一个存在重复值就会抛出该错误。
你的问题实际出在列索引重复:
你用来拼接的两个DataFrame(比率表、计数表)的列名都是index,沿列方向拼接后,新DataFrame会存在两个同名的index列,列索引不唯一,因此触发校验失败。
解决方法
拼接前分别给两个DataFrame设置不同的列名即可,参考代码如下:
# 给比率计算结果重命名列 ratio_df = (subset_gpby / count_gpby.count()).rename(columns={'index': '组内占比'}) # 给原始计数结果重命名列 count_df = count_gpby.count().rename(columns={'index': '总样本量'}) # 拼接后即可正常设置样式 pd.concat([ratio_df, count_df], axis=1).style.background_gradient(cmap ='Blues')
内容的提问来源于stack exchange,提问作者semblable
相关产品推荐
相关产品推荐

