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]的背景色设置为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)


要么:

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




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


python - 使用数据框单元格值设置另一个具有相同尺寸的数据框的样式-LMLPHP

关于python - 使用数据框单元格值设置另一个具有相同尺寸的数据框的样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54330809/

10-12 14:55
查看更多