如何在DataFrame填充对角线NaN时保留数值的科学计数法格式
问题原因
你使用np.fill_diagonal(granger_df.values, np.nan)修改值时,直接操作了DataFrame底层的numpy数组,会触发pandas的自动类型/显示格式推断,导致原本的科学计数法显示被重置为普通小数格式。
最优实现方式
推荐直接使用pandas原生索引赋值的方法修改对角线值,不会触动底层存储的格式规则,能完整保留原有显示效果:
# 获取DataFrame对角线对应的行列索引 row_idx, col_idx = np.diag_indices_from(granger_df) # 批量给对角线位置赋值NaN granger_df.loc[row_idx, col_idx] = np.nan
如果修改后仍出现格式异常,可以手动指定pandas全局浮点数显示规则,强制保留科学计数法:
# 可按需调整格式字符串,例如{:.3e}代表保留3位小数的科学计数法 pd.set_option('display.float_format', '{:.2e}'.format)
内容的提问来源于stack exchange,提问作者Blueboots
相关产品推荐
相关产品推荐

