如何在保留样式的同时清除Pandas Styled Object中的NaN值
移除Pandas Styled Object里的NaN且保留样式的办法
更省事的方案:用format修改显示规则
不用改动底层数据,仅在渲染阶段把NaN替换为空字符串,原有样式完全保留:
# 假设你已经得到了带样式的Styled Object styled_obj = styled_obj.format(na_rep='')
直接在已有的Styled Object上调用该方法,NaN就会显示为空,之前设置的所有样式都不会丢失。
必须修改底层数据的方案:改完数据后重新应用样式
如果一定要把DataFrame中的NaN替换为空字符串,得按以下步骤操作:
# 复制Styled Object的底层数据 new_data = styled_obj.data.copy() # 将NaN替换为空字符串 new_data.replace(np.nan, '', inplace=True) # 重新应用你之前写的样式逻辑(比如applymap、apply等样式方法) new_styled_obj = new_data.style.applymap(your_style_function)
注意:原Styled Object的样式无法直接迁移到新数据上,必须重新执行一遍你之前的样式生成代码。
为啥你的原代码会丢失样式?
你直接修改new_df.data时,虽然改动了底层数据,但Styled Object的样式是和原数据绑定的元数据,直接修改.data不会同步更新样式,甚至会导致数据与样式脱节,最终渲染时样式全部丢失——.data属性应当视为只读,不要直接修改它。
内容的提问来源于stack exchange,提问作者user1471980
相关产品推荐
相关产品推荐

