python - 使用字典和循环操作文件夹中每个文件的值
问题描述
如何根据从字典中提取的值来操作文件夹的每个文件?基本上,假设我在一个文件夹中有 x 个文件。我使用 pandas 重新格式化数据框,添加包含报告日期的列,并以相同的名称和日期保存新文件。
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)
我希望每个文件都是唯一的并按日期分类。在这种情况下,我想要三个文件,例如“retrofile0401.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。这些是与您的日期代码相对应的那些。
推荐阅读
- c - libnfc:无法打开 NFC 设备
- r - 使用分隔符从原始向量创建几个新向量
- angular - 从 Angular 7 中的 .net 核心 API 检索 http 响应正文
- mysql - Laravel:hasManyThrough 关系获取多对多表值
- python - 我们如何在 Open CV 中创建一个轨迹栏,以便我可以使用它跳到视频的特定部分?
- php - 引导崩溃:显示一个隐藏另一个
- ssl - 如何通过 SSL/TLS 连接 Thingsboard 和 Thingsboard 物联网网关?
- php - 检查队列返回状态
- jakarta-ee - 如何在生产中禁用 swagger-ui(Thorntail)?
- ssl - Websphere trust.p12 vs cacert 存储