使用 Dataframe 单元格值设置具有相同尺寸的另一个 Dataframe 的样式

2023-12-11

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo'.split(),
               'B': 'one one two'.split(),
               'C': np.arange(3), 'D': np.arange(3) * 2})

j = [{'bgcolor': "#55aa2a"}, {'bgcolor': "#d42a2a"}, {'bgcolor': "#d42a2a"}]
df2 = pd.DataFrame({'E': j, 'F': j, 'G': j, 'H': j})

上面的代码生成两个数据帧,df1是一个标准框架并且df2是一个由字典组成的框架(每个单元格都有一个字典作为其值)。

我想使用的细胞df2来设置单元格的样式df就位,即细胞df[0,1]将取单元格的值df2[0,1]并使用它作为它的风格

例子:

def highlight(df,df2):
    df[0,1] = '{}'.format(df2[0,1])
    return df

(应用于整个框架的除外)

这应该给出背景颜色df[0,1] as df2[0,1]="55aa2a"但返回一个KeyError打电话后df = df.style.apply(highlight, df2=df2).render()

是否可以使用细胞df2来设置单元格的样式df1?


您可以更改字符串值的格式,然后返回具有相同列名称的 DataFrame(索引值也必须相同):

df2 = df2.applymap(lambda x: 'background-color: {}'.format(x.get('bgcolor')))
print (df2)
                           E                          F  \
0  background-color: #55aa2a  background-color: #55aa2a   
1  background-color: #d42a2a  background-color: #d42a2a   
2  background-color: #d42a2a  background-color: #d42a2a   

                           G                          H  
0  background-color: #55aa2a  background-color: #55aa2a  
1  background-color: #d42a2a  background-color: #d42a2a  
2  background-color: #d42a2a  background-color: #d42a2a  

def highlight(x):
    d = dict(zip(df2.columns, x.columns))
    return df2.rename(columns=d)

Or:

def highlight(x):
    return pd.DataFrame(df2.values, columns=x.columns)

df.style.apply(highlight, axis=None)

df

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Dataframe 单元格值设置具有相同尺寸的另一个 Dataframe 的样式 的相关文章

随机推荐