我有三个数据框。
这是我的 df1,有 24866 行 64 列
这是df2
这是df3
我想遍历所有文件及其所有工作表,并根据条件更改 df1 的总成本。
print("\nIndex Template Files\n")
os.chdir('path to my \IndexTemplatefiles')
FileList = glob.glob('*.xlsx')
print(FileList)
for fname in FileList:
excel = pd.ExcelFile(fname)
sheets = pd.ExcelFile(fname).sheet_names # list of sheets
print(fname)
for sheet in excel.sheet_names:
df2 = pd.read_excel(excel, sheet_name=sheet)
df3 = pd.read_excel(CostGroupFile, sheet_name='Sheet2')
#merging df1 and df2
df1 = pd.merge(df1, df2, left_on='Version', right_on='Version Market - USE', how='left')
df1.loc[(
(df1['Cost Group'] == "CBSS_ron_rt_na_disp_JZJN") &
(df1['Version'].isin(df2['Version Market - USE'])),
'Cost Total')] = (df1['Market Spend'] / df1['Sum of Impressions']) * df1['Impressions']
#deleting extra columns
df1 = df1.drop(columns=['..all columns that came after merging'])
df1.to_excel(writer, index=False)
writer.save()
此代码正在运行并更新成本总计值,但正如您所看到的我手动输入的成本组,我希望它是动态的。
如果excel文件(索引模板文件)名称与df3[文件名]相似,其工作表名称即df2的工作表名称与df3[工作表名]相似,则使用相应的成本组并在过滤器部分使用过滤 df1 并更新总成本。
索引模板文件被命名为-
AdDape CBS 索引模板 6.3.xlsx
AdDape 中年指数模板 5.3.xlsx
还有 25 个类似的文件,所有这些数据框都不小。
如何使其动态并循环遍历其列并匹配?