python - 根据工作簿的名称向每个 Excel 工作簿添加日期列。使用 python 和熊猫
问题描述
我正在尝试向包含来自 excel 工作簿的数据的每一行添加一个日期列。
不太清楚如何开始,使用 python 和 pandas。(在 python 中仍然很新)
文件夹中的文件设置如下:
| Folder Name |
|------|
|All GL Accounts Jan 2020.xlsx|
|All GL Accounts Feb 2020.xlsx|
|All GL Accounts Mar 2020.xlsx|
ETC.
我想阅读 excel *Jan 2020.xlsx 上名称的结尾,并在包含格式化日期的列表中查找它,例如:2020 年 1 月 31 日。
我需要脚本遍历整个文件夹并对每年的每个月进行更改,并为包含数据的每一行添加一个日期列。
提前谢谢大家的帮助!!
解决方案
因此,向@Yuca 大喊大叫,为我指明了正确的方向。我使用了从 fnmatch 中学到的一些知识,并在我的脚本中实现了它。
不确定这是否是最好的处理方式,但它现在正在运行!
如果有人有任何他们想添加的东西,我总是愿意了解更多。
import os
import pandas as pd
from fnmatch import fnmatch
date_dict = {
'Jan 2020':r'01/01/2020',
'Feb 2020':r'02/01/2020',
'Mar 2020':r'03/01/2020',
'Apr 2020':r'04/01/2020',
'May 2020':r'05/01/2020',
'Jun 2020':r'06/01/2020',
'Jul 2020':r'07/01/2020',
'Aug 2020':r'08/01/2020',
'Sep 2020':r'09/01/2020',
'Oct 2020':r'10/01/2020',
'Nov 2020':r'11/01/2020',
'Dec 2020':r'12/01/2020',
}
date_list = (
'Jan 2020',
'Feb 2020',
'Mar 2020',
'Apr 2020',
'May 2020',
'Jun 2020',
'Jul 2020',
'Aug 2020',
'Sep 2020',
'Oct 2020',
'Nov 2020',
'Dec 2020'
)
patterns = [(date, f"*{date}.xlsx") for date in date_list]
path = r'file_path'
filelist = os.listdir(path)
for file in filelist:
print(file)
for date, pattern in patterns:
print(pattern)
print(date)
if fnmatch(file, pattern):
frames = []
df = pd.read_excel(path+'/'+file)
date_name = date_dict[date]
df['Date'] = date_name
print('Matched: ' + file)
frames.append(df)
frame = pd.concat(frames)
frame.to_excel(path +'\\_New_'+ file, index = False)
break
推荐阅读
- whatsapp - 是否有一个选项可以影响 WhatsApp 显示文本的方向,而不是根据语言自动影响?
- unity3d - VLG 组件不扩展无论子项的长度如何
- webdav - 在服务器上创建多个磁盘驱动器并分别为这些驱动器配置 webdav 访问
- c# - 无法使 CORS 工作 - .NET 4.7.2。接收 CORS Missig 允许来源
- neo4j - 如何在 neo4j 中为动态数据创建动态节点关系?
- install4j - 使用 rpm --resign 对 install4j rpm 进行签名会导致 rpmReadSignature
- python - 如何在 python 中求解“差分方程”(离散时间)?复杂的根源
- angular - 新添加的组的扩展属性设置为 false
- r - 通过 vroom 和管道压缩文件到 pixz
- python - 我如何让我的机器人检测用户是否发送嵌入