Python -将日期时间列添加到 Dataframe

rxztt3cl  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(131)

我有大量的excel文件需要从中提取数据,希望能提取到一个pandas df中。这个文件包含许多列,其中一列是时间,如字符串“16:30”
例如,文件名为“Monday 21st September 2020. xlsx”
我尝试循环遍历这些文件,并添加一个datetime列,该列包括来自文件名的日期和来自excel文件列的时间。

import pandas as pd
import datetime
import dateutil
import glob
import pathlib

folder = r"C:\temp\Friday 1st April 2022 (SB).xlsx"

for file in glob.glob(folder, recursive=False):
    #read in the excel file
    df = pd.read_excel(file, sheet_name="SB", usecols="B,I,J")
    
    #workout the date from the file name
    filedate = dateutil.parser.parse(pathlib.Path(file).stem.replace(" (SB)",""))
    
    #print filedate because it doesnt end up in the df correctly!
    print(type(filedate))
    print(filedate)
    df.insert(0,'Date', racedate.strftime('%d-$m-%Y'))
  
    print(df)

这就给出了,这个.....所以添加到df的日期在某个地方出错了

C:\temp\Friday 1st April 2022 (SB).xlsx
<class 'datetime.datetime'>
2022-04-01 00:00:00
           Date   Time  R1  R2
0    01-$m-2022  16:30   9   5
1    01-$m-2022  16:30   5   5
2    01-$m-2022  16:30   6   5
3    01-$m-2022  16:30   3   6
4    01-$m-2022  16:30   3   3
..          ...    ...  ..  ..
446  01-$m-2022  16:15   3   4
447  01-$m-2022  16:15   3   3
448  01-$m-2022  16:15   3   3
449  01-$m-2022  16:15   5   3
450  01-$m-2022  16:15   5   4

[451 rows x 4 columns]

另外,一旦我得到这个排序,我想合并两个日期和时间列到一个日期时间对象。

4smxwvx5

4smxwvx51#

您可以像这样从folder变量中提取日期。

from dateutil import parser
import re 

folder = r"C:\temp\Friday 1st April 2022 (SB).xlsx"

date_string = re.findall(r'\d{1,2}[a-z]{2} \w+ \d{4}', folder)[0]
date_obj = parser.parse(date_string)
print(date_obj.strftime("%d-%m-%Y"))

这将打印01-04-2022
变量date_string是由regex计算出来的,得到的是1st April 2022,dateutil库可以很容易地解析它。

相关问题