[英]How do I turn datefinder output into a list?
因此,這里已回答了這個問題: 將datefinder的輸出放入列表不幸的是,我的代表太低了,所以我無法發表評論以澄清為什么它不能按預期運行。 我想將文件名字符串轉換為日期列表,以便隨后將其用作日期列的填充。 所有文件名都包含事件日期,但它們本身不在工作表上。 格式為:CompanyNameEventLocationDDMMYYYY.xlsx
import glob
import datefinder
#get all Excel files within folder
path = r"C:\Users\me\Documents\Events\Spreadsheets\Consolidated\*.xlsx"
filename = glob.glob(path)
#get dates from filenames
event_dates = (datefinder.find_dates(f) for f in filename)
#check output
for days in event_dates:
print(days.strftime("%Y-%m-%d %H:%M:%S"))
沒有得到轉換的對象,而是得到以下錯誤:AttributeError:
'generator' object has no attribute 'strftime'
當我嘗試將其直接轉換為列表時
date_list = list(event_dates)
print(event_dates)
我仍然得到輸出說它仍然是一個生成器對象:
<generator object <genexpr> at 0x00000230571AE660>
我需要更改什么,以便它實際上成為日期時間列表,可用於通過向前填充來填充附加的“日期”列?
您的代碼無效,因為find_dates
返回給您一個生成器,並且事件日期包含一個生成器列表。 它可以與chain.from_iterable
一起使用,如下所示
import glob
import datefinder
from itertools import chain
#get all Excel files within folder
path = r"C:\Users\me\Documents\Events\Spreadsheets\Consolidated\*.xlsx"
filename = glob.glob(path)
#get dates from filenames
event_dates = (datefinder.find_dates(f) for f in filename)
#check output
for days in chain.from_iterable(event_dates):
print(days.strftime("%Y-%m-%d %H:%M:%S"))
但是我嘗試在具有您格式的文件名上使用日期查找器,但效果不佳。 我認為這不是為此目的而設計的。
event_dates = datefinder.find_dates('afilename_01-08-2019.xls')
for match in event_dates:
print(match)
event_dates = datefinder.find_dates('afilename01082019.xls')
for match in event_dates:
print(match)
此先前的代碼顯示:
2019-01-08 00:00:00
如果您的格式始終為CompanyNameEventLocationDDMMYYYY.xlsx
,則應解析日,月和年的數字,並將其分配給date
對象:
import datetime
import glob
#get all Excel files within folder
path = r"C:\Users\me\Documents\Events\Spreadsheets\Consolidated\*.xlsx"
filenames = glob.glob(path)
for filename in filenames:
full_date = filename.split('.')[0]
day, month, year = full_date[-8:-6], full_date[-6:-4], full_date[-4:]
real_date = datetime.date(int(year), int(month), int(day))
print(real_date)
最終通過進行以下更改使它起作用:
import pandas as pd
import glob
import datefinder
from datetime import datetime
#get all Excel files within folder
path = r"C:\Users\me\Documents\Events\Spreadsheets\Consolidated\*.xlsx"
filename = glob.glob(path)
#get dates from filenames and convert to datetime objects
event_dates = (datefinder.find_dates(f) for f in filename)
event_dates_dto = []
for dates in event_dates:
event_dates_dto.append(pd.to_datetime(list(dates)))
#check output
print(event_dates_dto)
現在,這將創建一個從每個文件名中提取的DateTimeIndexes列表,該列表可根據需要用於我需要構造的遠期日期列,用於建立索引等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.