【问题标题】:Pandas highlighting excel columns with conditions using a function熊猫使用函数突出显示带有条件的excel列
【发布时间】:2019-01-19 02:10:45
【问题描述】:

我有一个要写入 excel 的 pandas 数据框 (Pre_Final_DataFrame)。

如果对应的行在任何以“结果_”开头的列上有“不匹配”字样,我需要在 Excel 中突出显示该行。

所以,我决定使用一个数组来了解需要突出显示的数组。

但是现在,我更喜欢一种使用函数来突出显示的方法,因为它太慢了。 请帮我解决这个问题。

简而言之,我正在使用 Pandas 编写一个数据框来 excel,它有数百万条记录,我希望只有当任何一个列中存在 No Match 值时,才会以“黄色”突出显示一行以“Result_”开头的名称

Excel 中出现的预期结果如下所示,

以数据框开头的输入代码:-

import pandas as pd

data = {
     'ColA':[1, 1], 
     'ColB':[1, 1],
     'Result_1':['Match', 'Match'], 
     'ColA1':[1, 2], 
     'ColB1':[1, 1],
     'Result_2':['No Match', 'Match'],  
     }

Pre_Final_DataFrame = pd.DataFrame(data)

ResultColumns_df = Pre_Final_DataFrame.filter(like='Result_')
ResultColumns_df_false =ResultColumns_df[ResultColumns_df.values  == "No Match"]
RequiredRows_Highlight = ResultColumns_df_false.index.tolist()

writer = pd.ExcelWriter(OutputName,date_format='%YYYY-%mm-%dd',datetime_format='%YYYY-%mm-%dd')
Pre_Final_DataFrame.to_excel(writer,'Sheet1',index = False)
writer.save()

预期输出:

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我们可以使用StyleFrame 包将其读入excel表格。

    import pandas as pd
    from StyleFrame import StyleFrame, Styler
    
    df = pd.read_excel("Your Excel Sheet")
    sf = StyleFrame(df)
    
    style = Styler(bg_color='yellow') 
    for col in df:
         sf.apply_style_by_indexes(sf[sf[col]== 'No Match'],styler_obj=style)
    
    sf.to_excel('test.xlsx').save()
    

    这帮助我获得了一个输出 excel 表,其中突出显示了所有行,其中包含至少一列值为 No Match。

    希望这会有所帮助。干杯

    【讨论】:

    • 它给了我这个错误 - 'Styler' 对象在这一行没有属性 'to_excel' new_df.to_excel(writer,'Sheet1',index = False)
    • new_df 是 pandas.style.Styler 对象。目前 pandas 没有将样式对象写入 excel 表的功能。我认为看起来 openpyxl 引擎可以完成这项工作:[link] (pandas.pydata.org/pandas-docs/stable/style.html)
    • 现在,我不明白我们如何使用 openpyxl 将这个 new_df 写入新文件。这个链接给了我一些想法,但它没有帮助 - stackoverflow.com/questions/36657288/…
    • @Rojo 我已经更新了答案,我得到了突出显示的 excel 表作为输出。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2023-02-21
    相关资源
    最近更新 更多