python - 为 pandas 数据框的一列着色 : change in format

标签 python pandas dataframe

我想为我的数据框中的一列着色(使用给定答案中提出的方法,链接如下)。因此(仅取数据帧的第一行)我曾经使用以下代码表达式更改颜色:

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    

Colouring one column of pandas dataframe

最佳答案

~~编辑,我看到你想要的是行而不是列:

应用 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

输出:

enter image description here

一旦使用样式,它就不再是 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'])

提供一个大数据框:

enter image description here

然后使用此代码将仅显示(即显示)其中 10 行:

style = data1.export()
data1.data.head(10).style.use(style).format(precision=1, subset=list(data1.columns))

现在只显示前 10 行: enter image description here

关于python - 为 pandas 数据框的一列着色 : change in format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73196768/

相关文章:

Python Pandas 日期时间索引创建数据框

python - 每个结果的多个子查询,如何更快?

python - 为什么我的 for 循环中的 if 条件在一次迭代为真后停止验证?

python-2.7 - 如何在没有 pip 或任何包管理器的情况下安装 Pandas 和依赖项

r - hash - 相同的 R 数据帧,不同的哈希值(不是属性问题)

python - 如何使用python查找文件夹中的特定文件

python - 无法在 Pandas 数据框中进行插值

python - 删除 pandas df 中的列表字符串开头

python - 仅选择 Pandas 中每连续分钟都有数据的日期范围

python - 将 python 数据框传递给对象并更改数据框