检查另一列是否与文件名匹配后,从另一个数据帧的列值中过滤数据帧

时间:2021-06-24 22:20:10

标签: python excel pandas dataframe data-analysis

我有三个数据框。

这是我的 df1,有 24866 行 64 列

enter image description here

这是df2

enter image description here

这是df3

enter image description here

我想遍历所有文件及其所有工作表,并根据条件更改 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 个类似的文件,所有这些数据框都不小。
如何使其动态并循环遍历其列并匹配?

0 个答案:

没有答案
相关问题