PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式

Posted

技术标签:

【中文标题】PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式【英文标题】:PYTHON Pandas - Using Pandas Styling for dataframe based on values in other dataframe 【发布时间】:2019-07-14 01:51:00 【问题描述】:

我已经处理这个挑战很长一段时间了,但我想不出一个像样的解决方案。

我有两个形状相同的数据框。

我想做的是,根据数据框 2 中包含的值对数据框 1 进行着色。

我可以根据 Dataframe 2 自己的值为其着色,但我无法将“样式”转移到 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

【问题讨论】:

【参考方案1】:

使用applymapget by 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)

【讨论】:

你太棒了!这对我有用!我只剩下一个问题:如何处理此错误/警告?:Python36_64\lib\site-packages\pandas\io\formats\excel.py:312: CSSWarning: Unhandled color format: '' Happens for the cells with没有值,我猜在这种情况下'' @mgruber - 你的熊猫版本是什么? @mgruber - 很奇怪,对我来说它工作得很好,可以升级到最新版本吗? @mgruber - 如何将colors.get(val,'') 更改为colors.get(val,None) @jezreal Brilliant!

以上是关于PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式的主要内容,如果未能解决你的问题,请参考以下文章

python 将函数应用于pandas数据帧中的两列

根据另一个数据框 python pandas 替换列值 - 更好的方法?

python 使用datetime列查找pandas数据帧中的时间漏洞

python 存储在pandas数据帧中的几个变量之间的矩阵相关性

Python Pandas - 主要数据帧,想要删除较小数据帧中的所有列

如何在 python / pandas 中进行左内连接? [复制]