我正在尝试有条件地格式化一个Pandas Dataframe ,并将输出写入excel。我卡在了一个点上:
import pandas as pd
df = pd.DataFrame([['x',3,1],['x',2,2,],['y',4,6]],columns=list("ABC"))
def highlight_rows(row):
value = row.loc['A']
if value in ('x'):
color = '#BAFFC9'
else:
color = None
return ['background-color: {}'.format(color) for r in row]
df.style.apply(highlight_rows,axis=1)
上面的代码将突出显示列A中的值== 'x'的所有行。然而,我想做的是类似于:如果A列== 'x',则突出显示B列,否则如果A列== 'y',则突出显示C列,否则无
我试着通过编写另一个函数来突出显示列来组合上面的代码,但似乎不起作用。
def highlight_cols(col):
if col.name == 'B':
color = '#BAFFC9'
else:
color = None
return ['background-color: {}'.format(color) for c in col]
调用上述两个函数如下
df.style.apply(highlightrows,axis=1).apply(highlight_cols,subset=['B])
任何指示都将受到赞赏。
1条答案
按热度按时间zbdgwd5y1#
我的方法是尝试找到每一行,并检查突出显示列的值,列名。它应该完成任务。