我想为我的数据框中的一列着色(使用给定答案中提出的方法,链接如下)。因此(仅取数据帧的第一行)我曾经使用以下代码表达式更改颜色:
data1.head(1).style.set_properties(**{'background-color': 'red'}, subset=['column10'])
但是它会导致另一个问题:它更改了我的数据帧的格式(= 在小数点后添加更多 0..)。我是否有可能保留数据框的旧格式,并且仍然能够为列着色?提前致谢
旧输出(第一行):
2021-01-02 32072 0.0 1831 1831 1.0 1 0 1 0.0 1.0
新输出(第一行):
2021-01-02 32072 0.000000 1831 1831 1.000000 1 0 1 0.000000 1.000000 1.000000
最佳答案
~~编辑,我看到你想要的是行而不是列:
应用 style
代码后,它会将 pandas 数据帧从 pandas.core.frame.DataFrame
对象更改为 pandas.io.formats。 style.Styler
对象。 styler 对象处理 float 的方式与 pandas dataframe 对象不同,并产生您在代码中看到的内容(更多小数点)。您可以使用 style.format
更改格式以获得您想要的结果:
data = [{"col1":"2021-01-02", "col2":32072, "col3":0.0, "col4":1831, "col5":1831,
"col6":1.0, "col7":1, "col8":0, "col9":1, "column10":0.0, "col11":1.0}]
data1 = pd.DataFrame(data)
data1 = data1.style.format(precision=1, subset=list(data1.columns)).set_properties(**{'background-color': 'red'}, subset=['column10'])
data1
输出:
一旦使用样式,它就不再是 pandas 数据框,而是现在的 Styler 对象。因此,适用于 pandas 数据帧的普通命令不再适用于新样式的数据帧(例如,仅执行 head(10)
不再有效)。但是,有解决方法。如果您在应用样式后只想查看 Styler 的前 10 行,则可以导出使用的样式,然后重新应用它以仅查看前 10 行:
data = [{"col1":"2021-01-02", "col2":32072, "col3":0.0, "col4":1831, "col5":1831,
"col6":1.0, "col7":1, "col8":0, "col9":1, "column10":0.0, "col11":1.0}]
data1 = pd.DataFrame(data)
data1 = data1.append(data*20).reset_index(drop=True)
data1 = data1.style.format(precision=1, subset=list(data1.columns)).set_properties(**{'background-color': 'red'}, subset=['column10'])
提供一个大数据框:
然后使用此代码将仅显示(即显示)其中 10 行:
style = data1.export()
data1.data.head(10).style.use(style).format(precision=1, subset=list(data1.columns))
关于python - 为 pandas 数据框的一列着色 : change in format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73196768/