Python 熊猫数据帧样式-如何单独(而不是整体)对每一行进行颜色映射

Python 熊猫数据帧样式-如何单独(而不是整体)对每一行进行颜色映射,python,pandas,jupyter-notebook,pandas-styles,Python,Pandas,Jupyter Notebook,Pandas Styles,我有这样一个数据框(df),使用颜色映射进行样式设置: #create random 30 x 30 frame df = pd.DataFrame(np.random.randint(0, 100, (5, 20))) df.style.background_gradient(cmap='RdYlGn_r') 上面的代码在所有数字(5 x 20单元格-较小的数字为绿色,较大的数字为红色)上为数据帧着色 对于单独考虑的每一行(不是作为一个5 x 20单元格的整体组),即对于单独考虑的第0行

我有这样一个数据框(
df
),使用颜色映射进行样式设置:

#create random 30 x 30 frame
df = pd.DataFrame(np.random.randint(0, 100, (5, 20)))

df.style.background_gradient(cmap='RdYlGn_r')

上面的代码在所有数字(5 x 20单元格-较小的数字为绿色,较大的数字为红色)上为数据帧着色

对于单独考虑的每一行(不是作为一个5 x 20单元格的整体组),即对于单独考虑的第0行到第4行,如何将小单元格着色为大单元格(即1行x 20列)

===

示例上述
df
的以下两个示例使用apply按行和列分别突出显示中间值。我如何为每一行上色,如上面小到大的数字示例所示

def highlight_max(s):
    '''
    highlight the maximum in a Series yellow.
    '''
    is_max = s == s.max()
    return ['background-color: yellow' if v else '' for v in is_max]

display(
    HTML("""<p style="background-color:lightblue;color:black;font-weight: bold">
             each row - median highlight
         </p>""")
)

display(df.head(5).style.apply(highlight_max, axis=1))

display(
    HTML("""<p style="background-color:lightblue;color:black;font-weight: bold">
             each col - median highlight
         </p>""")
)
display(df.head(5).style.apply(highlight_max, axis=0))
def高亮显示最大值:
'''
以黄色系列突出显示最大值。
'''
is_max=s==s.max()
return['background-color:yellow'if v else''表示v in is_max]
展示(
HTML(“”

每行-中间带高光

“”) ) 显示(df.head(5.style.apply)(高亮显示最大值,轴=1)) 展示( HTML(“”

每列-中间突出显示

“”) ) 显示(df.head(5.style.apply)(高亮显示最大值,轴=0))

默认情况下,应用背景渐变时,将分别考虑每一列

通过比较第0列和第4列中的“74”,可以在顶部图像中验证这一点

要单独处理每一行,请使用
df.style.background\u gradient(cmap='RdYlGn\u r',axis=1)

其他信息:

请参阅下面的代码,以生成以下显示,使背景颜色很好

  • 整个数据帧(轴=无)
  • 查看每一列(轴=0)[默认值]
  • 查看每一行(轴=1)

将熊猫作为pd导入
从io导入StringIO
从IPython.display导入显示
从IPython.display导入清除输出
从IPython.display导入HTML
dfstr=StringIO(u“”
0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19
85  83  90  78  70  70  65  79  49  28  14  11  4   52  90  19  78  7   10  50
10  10  10  5   0   4   6   5   5   5   4   2   2   2   2   2   2   2   2   2
16  33  81  81  47  68  20  75  92  65  39  26  53  82  1000    57  4   53  45  18
10  10  10  5   0   4   6   5   30  30  30  2   2   2   2   2   2   2   2   2
100 299 399 50  50  50  50  50  50  50  300 200 201 300 200 300 204 200 305 300
""")
df=pd.read\u csv(dfstr,sep=“\t”)
#df=pd.DataFrame(np.random.normal(random.choice([1001000]),random.choice([10100]),size=(5,12)))
#df
展示(
HTML(“”

整个数据帧(轴=无)-查看整个数据帧

“”) ) 显示(df.style.background\u渐变(cmap='RdYlGn\u r',axis=None)) 展示( HTML(“”

每列(轴=0)。所有行。这是默认值。

“”) ) 显示(df.style.background_gradient(cmap='RdYlGn_r',axis=0))#默认值 展示( HTML(“”

每行(轴=1)。所有列。

“”) ) 显示(df.style.background\u渐变(cmap='RdYlGn\u r',轴=1))
import pandas as pd
from io import StringIO
from IPython.display import display
from IPython.display import clear_output
from IPython.display import HTML

dfstr = StringIO(u"""
0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19
85  83  90  78  70  70  65  79  49  28  14  11  4   52  90  19  78  7   10  50
10  10  10  5   0   4   6   5   5   5   4   2   2   2   2   2   2   2   2   2
16  33  81  81  47  68  20  75  92  65  39  26  53  82  1000    57  4   53  45  18
10  10  10  5   0   4   6   5   30  30  30  2   2   2   2   2   2   2   2   2
100 299 399 50  50  50  50  50  50  50  300 200 201 300 200 300 204 200 305 300
""")
df = pd.read_csv(dfstr, sep="\t")

# df = pd.DataFrame(np.random.normal(random.choice([100, 1000]), random.choice([10, 100]), size=(5, 12)))
# df



display(
    HTML("""<br /><p style="background-color:lightblue;color:black;font-weight: bold">
             whole dataframe (axis=None) - look at whole data frame
         </p>""")
)
display(df.style.background_gradient(cmap='RdYlGn_r', axis=None))

display(
    HTML("""<br /><p style="background-color:lightblue;color:black;font-weight: bold">
             each column (axis=0). all rows. This is the Default.<br />


         </p>""")
)
display(df.style.background_gradient(cmap='RdYlGn_r', axis=0)) #default



display(
    HTML("""<br /><p style="background-color:lightblue;color:black;font-weight: bold">
             each row (axis=1). all columns. <br />

         </p>""")
)
display(df.style.background_gradient(cmap='RdYlGn_r', axis=1))