簡體   English   中英

Python pandas 兩列之間的高亮值匹配條件 excel

[英]Python pandas Highlight value match condition between two column excel

我有一個多張 excel 文件,如下圖所示。 我想突出顯示條件:如果“Kind”列中的值“app”與“NetFrameworkVersion”列中的值“v6.0”匹配,則如果“Kind”列中的值“functionapp”與值“v4”匹配,則將其突出顯示為黃色'NetFrameworkVersion' 列中的 .0' 然后將其突出顯示為綠色,否則將其突出顯示為藍色

import pandas as pd
import pathlib
import xlsxwriter


with pd.ExcelWriter('C:/Users/hoang.le/Documents/FD/FD_environment.xlsx' , engine='xlsxwriter') as writer:
    for filename in pathlib.Path('C:/Users/hoang.le/Documents/FD').glob('*.csv'):
        df = pd.read_csv(filename) 
        
        
        df_custom = df.filter(['Kind', 'NetFrameworkVersion', 'Use32BitWorkerProcess', 'AlwaysOn' ]) #Select column and arrange custom
        
        sheetname = filename.stem.split('-')[3] #Set sheet name save as short name
        
        df_custom.style.to_excel(writer, sheet_name=sheetname,index=True, header = True) #write out file excel after read all data from csv files
        #set border#
        workbook = writer.book
        worksheet = writer.sheets[sheetname]
        border_fmt = workbook.add_format({'bottom':1, 'top':1, 'left':1, 'right':1})
        worksheet.conditional_format(xlsxwriter.utility.xl_range(0, 0, len(df), len(df_custom.columns)), {'type': 'no_errors', 'format': border_fmt})
        
        worksheet.set_column('C1:Z200', 25)   #set range column width
        worksheet.set_column('B:B', 35) #set 1 column width
        
        red_format = workbook.add_format({'bg_color':   '#FFC7CE',
                               'font_color': '#9C0006'})
        worksheet.conditional_format('F1:F1000', {'type':     'text',
                                        'criteria': 'containing',
                                        'value':    'True',
                                        'format':   red_format})
        worksheet.conditional_format('G1:G100', {'type':     'text',
                                        'criteria': 'containing',
                                        'value':    'False',
                                        'format':   red_format})     
    writer.save()

示例圖片:在此處輸入圖像描述

df成為您圖片中的DataFrame

像這樣的東西應該工作:

import pandas as pd # Jinja2 must be installed


def styler(series):
    color_attr = ''
    
    if series['Kind'] == 'app' and series['NetFrameworkVersion'] == 'v6.0':
        color_attr = 'background-color: yello'
    
    elif series['Kind'] == 'functionapp' and series['NetFrameworkVersion'] == 'v4.0':
        color_attr = 'background-color: green'
    
    else:
        color_attr = 'background-color: blue'

    return pd.Series(color_attr, series.index)


left_df_p = df[['Kind', 'NetFrameworkVersion']]
left_df_p.style.apply(styler, axis=1) # iterates over every row

colored_df = left_df_p.join(df[['Use32BitWorkerProcess', 'AlwaysOn']])

下一次,請提供一個Minimal, Reproducible Example ,以便人們可以實際測試代碼。 與其張貼圖片,不如調用並發布 df.to_dict 的df.to_dict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM