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