![](/img/trans.png)
[英]Take difference between two column of pandas dataframe based on condition in python
[英]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.