Pandas,Python,Excel,加粗一行使用条件格式无解
Pandas, Python, Excel, Bold a row using conditional formatting no solution
我正在使用 python3 和 pandas 创建一个脚本来:
- 读取可变列长度的非结构化 xsls 数据
- "this"、"last" 和 "diff" 列的总计
- 在品牌列下添加总计
- 动态加粗包含 "total"
的整行
关于最后一点,我一直在努力应对的挑战是行索引会根据输入脚本的数据而变化。提供的代码没有解决此问题的方法。我已经尝试了所有我能想到的使用 style.applymap(bold)
和不带变量的变体。
输入示例
input
期望结果示例
outcome
脚本:
import pandas as pd
import io
import sys
import warnings
def bold(val):
return 'font-weight: bold'
excel_file = 'testfile1.xlsx'
df = pd.read_excel(excel_file)
product = (df.loc[df['Brand'] == "widgit"])
product = product.append({'Brand':'Total',
'This':product['This'].sum(),
'Last':product['Last'].sum(),
'Diff':product['Diff'].sum(),
'% Chg':product['This'].sum()/product['Last'].sum()
},
ignore_index=True)
product = product.append({'Brand':' '}, ignore_index=True)
product.fillna(' ', inplace=True)
尝试这样的事情:
def highlight_max(x):
return ['font-weight: bold' if v == x.loc[4] else ''
for v in x]
df = pd.DataFrame(np.random.randn(5, 2))
df.style.apply(highlight_max)
输出:
我正在使用 python3 和 pandas 创建一个脚本来:
- 读取可变列长度的非结构化 xsls 数据
- "this"、"last" 和 "diff" 列的总计
- 在品牌列下添加总计
- 动态加粗包含 "total" 的整行
关于最后一点,我一直在努力应对的挑战是行索引会根据输入脚本的数据而变化。提供的代码没有解决此问题的方法。我已经尝试了所有我能想到的使用 style.applymap(bold)
和不带变量的变体。
输入示例 input
期望结果示例
outcome
脚本:
import pandas as pd
import io
import sys
import warnings
def bold(val):
return 'font-weight: bold'
excel_file = 'testfile1.xlsx'
df = pd.read_excel(excel_file)
product = (df.loc[df['Brand'] == "widgit"])
product = product.append({'Brand':'Total',
'This':product['This'].sum(),
'Last':product['Last'].sum(),
'Diff':product['Diff'].sum(),
'% Chg':product['This'].sum()/product['Last'].sum()
},
ignore_index=True)
product = product.append({'Brand':' '}, ignore_index=True)
product.fillna(' ', inplace=True)
尝试这样的事情:
def highlight_max(x):
return ['font-weight: bold' if v == x.loc[4] else ''
for v in x]
df = pd.DataFrame(np.random.randn(5, 2))
df.style.apply(highlight_max)
输出: