使用字典和循环在文件夹中操纵每个文件的值



如何根据词典从字典中取出的值操纵文件夹的每个文件?基本上,说我的文件夹中有x文件。我使用熊猫重新格式化数据框架,添加包含报告日期的列,然后以相同名称和日期保存新文件。

import pandas as pd
import pathlib2 as Path
import os
source = Path("Users/Yay/AlotofFiles/April")
items = os.listdir(source)
d_dates = {'0401' : '04/1/2019', '0402 : 4/2/2019', '0403 : 04/03/2019'}
for item in items:
   for key, value in d_dates.items():
        df = pd.read_excel(item, header=None)
        df.set_columns = ['A', 'B','C']
        df[df['A'].str.contains("Awesome")]
        df['Date'] = value
        file_basic = "retrofile"
        short_date = key 
        xlsx = ".xlsx"
        file_name = file_basic + short_date + xlsx
        df.to_excel(file_name)

我希望每个文件唯一并按日期进行分类。在这种情况下,我想拥有三个文件,例如" reatofile0401.xlsx",其中包含" 04/01/2019"的列,并且只有与原始文件相关的数据。实际结果几乎是循环每个单独的项目,创建三个不同的文件,然后将这些值移至下一个文件,重复并替换第一个迭代,直到我只剩下三个文件,这些文件是最后一个文件的副本。唯一不同的是,每个文件的日期都不同,并且以不同的方式命名。这就是我想要的,但它正在重复上一个文件中的数据。如果我删除第二个循环,它可以按照我想要的方式工作,但是无法根据我在字典中创建的值对其进行分类。

尝试以下内容。我只是使输入文件名明确说明发生了什么。您可以继续从源头使用您的。

input_filenames = [
    'retrofile0401_raw.xlsx', 
    'retrofile0402_raw.xlsx', 
    'retrofile0403_raw.xlsx',]
date_dict = {
    '0401': '04/1/2019', 
    '0402': '4/2/2019', 
    '0403': '04/03/2019'}
for filename in input_filenames:
    date_key = filename[9:13]
    df = pd.read_excel(filename, header=None)
    df[df['A'].str.contains("Awesome")]
    df['Date'] = date_dict[date_key]
    df.to_excel('retrofile{date_key}.xlsx'.format(date_key=date_key))

filename[9:13]从文件名中获取字符#9-12。这些是与您的日期代码相对应的。

最新更新