如何为Pandas DataFrame分配新styler对象?赋值失败求解
解决Pandas DataFrame无法直接赋值Styler对象的问题
你直接给df.style赋值新的Styler对象没用,因为df.style是个属性 getter——每次访问它都会生成一个全新的Styler实例,之前赋值的内容会直接被覆盖掉。
正确的做法有两种:
1. 直接使用修改后的Styler对象
不需要把Styler重新赋值给df.style,直接用你修改好的s对象就行,比如要显示样式就调用s,要保存成HTML就用s.to_html():
import pandas as pd import numpy as np def color_negative(v, color): return f"color: {color};" if v < 0 else None df = pd.DataFrame(np.random.randn(5, 2), columns=["A", "B"]) # 创建并修改Styler对象 s = df.style.applymap(color_negative, color='green', subset=["B"]) s = s.applymap(color_negative, color='red', subset=["A"]) # 直接使用这个s对象即可 s # 在Jupyter里会直接渲染样式 # 或者保存为HTML s.to_html("styled_df.html")
2. 给DataFrame添加自定义属性存储Styler
如果非要把Styler和DataFrame绑定在一起,可以自己加个自定义属性,比如df.my_styler,之后直接用这个属性调用样式:
import pandas as pd import numpy as np def color_negative(v, color): return f"color: {color};" if v < 0 else None df = pd.DataFrame(np.random.randn(5, 2), columns=["A", "B"]) s = df.style.applymap(color_negative, color='green', subset=["B"]) s = s.applymap(color_negative, color='red', subset=["A"]) # 添加自定义属性存储Styler df.my_styler = s # 之后用这个属性访问样式 df.my_styler
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

