Pandas 如何根据单元格位置设置背景色?

Pandas 如何根据单元格位置设置背景色?,pandas,Pandas,我需要根据单元格的位置而不是单元格的内容来设置数据框中的背景色 考虑这个数据帧: np.random.seed(24) df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC')) 期望的结果,对excel屏幕截图表示歉意: 我希望根据单元格的位置选择特定的单元格范围: bg_color_range = df.loc[1:3,'B':'C'] 并将其背景设置为绿色: def bg_green(x): return 'ba

我需要根据单元格的位置而不是单元格的内容来设置数据框中的背景色

考虑这个数据帧:

np.random.seed(24)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
期望的结果,对excel屏幕截图表示歉意:

我希望根据单元格的位置选择特定的单元格范围:

bg_color_range = df.loc[1:3,'B':'C']
并将其背景设置为绿色:

def bg_green(x):
    return 'background-color: lime'

df.style.applymap(bg_green, bg_color_range)

但这就产生了
keyrerror:“[Index(['B'],dtype='object')]中没有一个在[Index]”
中,我不知道如何告诉
.style.applymap
要操作的单元格范围。

请尝试
使用
axis=None
应用

def bg_green(df):
    ret = pd.DataFrame('', index=df.index, columns=df.columns)
    ret.loc[1:3, 'B':'C'] = 'background-color: lime'
    return ret

df.style.apply(bg_green, axis=None)
输出:


尝试
应用
轴=无

def bg_green(df):
    ret = pd.DataFrame('', index=df.index, columns=df.columns)
    ret.loc[1:3, 'B':'C'] = 'background-color: lime'
    return ret

df.style.apply(bg_green, axis=None)
输出:

您可以将
applymap
的参数与
pd.indexlice
一起使用,如下所示:

df.style.applymap(bg_green, subset=pd.IndexSlice[1:3, 'B':'C'])
您可以将
applymap
的参数与
pd.indexlice
一起使用,如下所示:

df.style.applymap(bg_green, subset=pd.IndexSlice[1:3, 'B':'C'])