Python 如果A列相同,如何突出显示所有其他不同的列?
我有一个包含多个列的excel文件。第一列包含键,并且有重复项 我想要实现的是比较包含相同键的所有列中的值,如果它们不同,则高亮显示 以下是一个例子:Python 如果A列相同,如何突出显示所有其他不同的列?,python,openpyxl,Python,Openpyxl,我有一个包含多个列的excel文件。第一列包含键,并且有重复项 我想要实现的是比较包含相同键的所有列中的值,如果它们不同,则高亮显示 以下是一个例子: values = {'product_key': [101, 102, 103, 101, 105, 103], 'date': ['2020-01-01', '2020-05-05', '2019-11-15', '2020-03-02', '2019-03-01', '2019-11-15'], 'price'
values = {'product_key': [101, 102, 103, 101, 105, 103],
'date': ['2020-01-01', '2020-05-05', '2019-11-15', '2020-03-02', '2019-03-01', '2019-11-15'],
'price': ['$15', '$13', '$11', '$14',' $20', '$18']}
df = pd.DataFrame(values, columns = ['product_key', 'date', 'price'])
我的桌子是这样的:
product_key date price
101 2020-01-01 $15
102 2020-05-05 $13
103 2019-11-15 $11
101 2020-03-02 $14
105 2019-03-01 $20
103 2019-11-15 $18
我想突出显示101的价格和日期,以及103的价格。我目前正在使用openpyxl。如果openpyxl不能做到这一点,还有其他库(anaconda中提供)可以帮助吗?我没有尝试仅使用
openpyxl
来实现这一点,但这将要求您迭代整个工作表(=数据帧),并手动按每个产品密钥进行分组,然后使用openpyxl
/“Excel”进行比较语法
使用(我是其中的一名维护人员)将允许您使用pandas语法在数据帧级别解决这个问题
首先,我们根据产品密钥
分组,然后使用.apply
在每个子数据帧上调用自定义函数。然后,我们可以使用带有否定(~
)的复制的,并使用样式框
进行样式设置
from styleframe import StyleFrame, Styler
values = {'product_key': [101, 102, 103, 101, 105, 103],
'date': ['2020-01-01', '2020-05-05', '2019-11-15', '2020-03-02', '2019-03-01', '2019-11-15'],
'price': ['$15', '$13', '$11', '$14',' $20', '$18']}
full_df = pd.DataFrame(values, columns=['product_key', 'date', 'price'])
yellow_bg_style = Styler(bg_color='yellow')
full_sf = StyleFrame(full_df)
def style_non_matching(grouped_df):
if len(grouped_df) == 1:
return
grouped_sf = StyleFrame(grouped_df)
for column in ('date', 'price'):
grouped_sf.apply_style_by_indexes(grouped_sf[~grouped_sf[column].duplicated(keep=False)],
yellow_bg_style,
cols_to_style=column)
full_sf.groupby('product_key').apply(style_non_matching)
full_sf.to_excel('test.xlsx').save()
将产生
谢谢你的回答!然而,我只允许使用anaconda中提供的库。我没有在Anaconda中看到styleframe。有其他选择吗?@CCCCos因为你不是第一个(也可能不是最后一个),我将研究如何使styleframe在上可用Anaconda@CCCCos顺便说一句,您可以使用pip
在conda
上安装styleframe
:1。激活conda环境,2<代码>康达安装pip
,3<代码>pip安装样式框
,4conda列表
应显示styleframe
最简单的方法是为相关范围添加条件格式。注意。openpyxl只是作为一个管道,因此您必须检查Excel文档,并可能查看相关的源文件以获得正确的语法。