PYTHON Pandas - 使用Pandas基于其他数据帧中的值为数据帧设置样式

问题描述 投票:1回答:1

我正在应对这一挑战很长一段时间,我无法想出一个像样的解决方案。

我有两个具有相同形状的数据帧。 Dataframe 1

enter image description here

enter image description here

我想要做的是,根据数据帧2中包含的值为数据帧1着色。

我能够根据自己的值为Dataframe 2着色,但我无法将'Styling'转移到Dataframe 1。

这是我的代码:

df1 = ...
df2 = ...

def apply_color(val):

    colors = {1: 'green',2: 'blue', 3: 'yellow', 4: 'orange', 5: 'grey'}

    return 'background-color: {}'.format(colors[val]) if val else ''

df2.style.applymap(df2)

任何人都可以指导我完成这个吗? :-)

非常感谢!

最诚挚的问候,MG

python pandas dataframe styles highlight
1个回答
1
投票

使用applymapget通过dict为DataFrame获取颜色并传递给Styler.apply

df1 = pd.DataFrame({
         'B':[4,5,4],
         'C':[7,8,9],
         'D':[1,3,5],


})

df2 = pd.DataFrame({
         'B':[1,np.nan,4],
         'C':[np.nan,2,np.nan],
         'D':[1,3,np.nan],

})

def apply_color(x):
    colors = {1: 'green',2: 'blue', 3: 'yellow', 4: 'orange', 5: 'grey'}
    return df2.applymap(lambda val: 'background-color: {}'.format(colors.get(val,'')))

df1.style.apply(apply_color, axis=None)

pic

© www.soinside.com 2019 - 2024. All rights reserved.