我正在尝试自动化一个简单的过程。我想要代码要做的是浏览“文章URL”中的每篇文章,并检查该文章中是否存在“子类别名称”下列出的公司。如果是这样,我希望它以绿色突出显示单元格,如果不是,则突出显示红色。我设法使其可以在一个单元格上工作(见图1)。
但是后来我尝试遍历整个电子表格。对于我的一生,我不知道为什么它不起作用(请参见下面的代码)。循环运行没有任何错误,但是当我转到文档时,它根本没有突出显示(请参见图2)。
我怀疑这与每次循环后未保存对电子表格所做的更改有关。但是如何将电子表格保存到变量中,因为只有在导出数据框并将其保存为xlsx后才能查看样式应用程序。
谢谢您的帮助:)
import pandas as pd
import requests as rq
path='/Users/mbongeni/Documents/Career/Internship/ProjectRunway/ProjectRunwayCopy.xlsx'
df = pd.read_excel(path)
#select following columns from df:
dfR = df[['Category Name','Sub-Category Name','Country','Article URL']]
#filter by online news coverage in column Category Name
is_online = dfR['Category Name']=='Online News Coverage: Project Runway SA'
dfR_online = dfR[is_online]
#colour functions
def cell_color_g(d):
return 'background-color: green'
def cell_color_r(d):
return 'background-color: red'
#test loop on first five rows:
for i, site in enumerate(dfR_online[0:4]['Article URL']):
#download site and check if strings in 'condition' are on site
site_download = rq.get(site)
condition = "Project Runway" in site_download.text \
and "South Africa" in site_download.text \
or "Project Runway SA" in site_download.text
if condition:
#color cell row i in column 'Article URL' green
dfR_online.style.\
applymap(cell_color_g, subset=pd.IndexSlice[i,['Article URL']])
else:
#color cell row i in column 'Article URL' red
dfR_online.style.\
applymap(cell_color_r, subset=pd.IndexSlice[i, ['Article URL']])
#recreate spreadsheet with style applied for specified range
dfR_online.style.to_excel('HighlightedSheet.xlsx', engine='openpyxl')