如何给列中的单元格着色? Pandas, pygsheets
How to colorize the cell in column? Pandas, pygsheets
我得到了包含 3 列的数据框:sku/price_1/price_2 如果 price_2 中的单元格小于 price_1 中的单元格,如何为它着色?我已经尝试过的:
def highlight_late(s):
color = ['background-color: red' if s['price_2'] < s['price_1'] else
'background-color: white' for s_ in s ]
return color
df = myDataframe.style.apply(highlight_late,axis=1)
我也尝试使用 subset='price_2' 但它没有用,returns 我的 keyerror 'price_1' 但如果我不使用 subset,它可以工作但会为所有行着色。以及如何使用 pygsheets 在 google sheet 中着色?
TABLE
我认为最简单的方法是根据条件创建 DataFrame
样式,使用 Styler.apply
和 axis=None
设置函数中需要的列:
print(df)
SKU price_1 price_2
0 SKU_123 5110 5110.0
1 SKU_124 4730 NaN
2 SKU_125 4490 NaN
3 SKU_126 4730 NaN
4 SKU_127 5530 5500.0
5 SKU_128 1245300 NaN
def highlight_late(x):
c1 = 'background-color: red'
# condition
m = x['price_2'] < x['price_1']
# empty DataFrame of styles
df1 = pd.DataFrame('', index=x.index, columns=x.columns)
# in case you need to set the background white
# df1 = pd.DataFrame('background-color: white', index=x.index, columns=x.columns)
# set column price_2 by condition
df1.loc[m, 'price_2'] = c1
# set column SKU by condition
# df1.loc[m, 'SKU'] = c1
return df1
df.style.apply(highlight_late, axis=None).to_excel('file.xlsx', index=False)
我得到了包含 3 列的数据框:sku/price_1/price_2 如果 price_2 中的单元格小于 price_1 中的单元格,如何为它着色?我已经尝试过的:
def highlight_late(s):
color = ['background-color: red' if s['price_2'] < s['price_1'] else
'background-color: white' for s_ in s ]
return color
df = myDataframe.style.apply(highlight_late,axis=1)
我也尝试使用 subset='price_2' 但它没有用,returns 我的 keyerror 'price_1' 但如果我不使用 subset,它可以工作但会为所有行着色。以及如何使用 pygsheets 在 google sheet 中着色? TABLE
我认为最简单的方法是根据条件创建 DataFrame
样式,使用 Styler.apply
和 axis=None
设置函数中需要的列:
print(df)
SKU price_1 price_2
0 SKU_123 5110 5110.0
1 SKU_124 4730 NaN
2 SKU_125 4490 NaN
3 SKU_126 4730 NaN
4 SKU_127 5530 5500.0
5 SKU_128 1245300 NaN
def highlight_late(x):
c1 = 'background-color: red'
# condition
m = x['price_2'] < x['price_1']
# empty DataFrame of styles
df1 = pd.DataFrame('', index=x.index, columns=x.columns)
# in case you need to set the background white
# df1 = pd.DataFrame('background-color: white', index=x.index, columns=x.columns)
# set column price_2 by condition
df1.loc[m, 'price_2'] = c1
# set column SKU by condition
# df1.loc[m, 'SKU'] = c1
return df1
df.style.apply(highlight_late, axis=None).to_excel('file.xlsx', index=False)