Python 熊猫多索引样式高亮显示一行

Python 熊猫多索引样式高亮显示一行,python,pandas,Python,Pandas,如何为以下泰坦尼克号数据中的class=第三行着色: import numpy as np import pandas as pd import seaborn as sns df = sns.load_dataset('titanic') df.groupby(['sex', 'class']).agg({'fare': ['sum','count']}) 参考资料 官方示例只处理简单的数据帧,但这里我必须强调多索引 数据帧。我在想如何完成这项任务 要求的 我想要两排,其中第三排为

如何为以下泰坦尼克号数据中的class=第三行着色:

import numpy as np
import pandas as pd
import seaborn as sns

df = sns.load_dataset('titanic')
df.groupby(['sex', 'class']).agg({'fare': ['sum','count']})
参考资料

官方示例只处理简单的数据帧,但这里我必须强调多索引 数据帧。我在想如何完成这项任务

要求的 我想要两排,其中第三排为男性和女性为红色


如果在其他索引中没有子字符串“Third”,可以执行以下操作:

df.groupby(['sex', 'class']).agg({'fare': ['sum','count']}).style.apply(lambda ser: ['background: lightblue' if 'Third' in ser.name else '' for _ in ser],axis=1)

如果在其他索引中没有子字符串“Third”,可以执行以下操作:

df.groupby(['sex', 'class']).agg({'fare': ['sum','count']}).style.apply(lambda ser: ['background: lightblue' if 'Third' in ser.name else '' for _ in ser],axis=1)

我已经比较喜欢您的答案,但是如果您想要基于我在您的样式链接上看到的内容的解决方案,以下内容可以使用:

def color_third_red(val):
    return [('color: red' if 'Third' in x else 'color: black') for x in val.index]

gdf = df.groupby(['sex', 'class']).agg({'fare': ['sum','count']})

s = gdf.style.apply(color_third_red,axis=0)
s
看起来像:

我已经比较喜欢您的答案,但是如果您想要基于我在您的样式链接上看到的内容的解决方案,以下内容可以使用:

def color_third_red(val):
    return [('color: red' if 'Third' in x else 'color: black') for x in val.index]

gdf = df.groupby(['sex', 'class']).agg({'fare': ['sum','count']})

s = gdf.style.apply(color_third_red,axis=0)
s
看起来像: