簡體   English   中英

從文件名中提取日期並添加為列

[英]extract date from filename and add as column

我有多個文件要制作成 df 並合並/附加到單個 df 中。 這些文件具有共同的文件名模式,即“SWAT [Jan 01,2026]^URTW_L3 的平均 map”。 我已經將所有文件和 append 讀取到一個文件中,並添加了帶有文件名的列。 但是,對於如何在列中而不是完整文件名中包含日期 [Jan 01, 2026] 感到困惑。 本質上,想要將文件名中的日期提取到附加的最終 df 中的日期時間格式列中。 正則表達式方法是首選,因為我想學習如何。

import glob
import os
import re
import pandas as pd
myfiles = glob.glob("C:\\Users\\x\\AnacondaProjects\\VORONOI\\test\\*")

col_names = ['X','Y','SW','i']
df = pd.DataFrame()
for file_ in myfiles:
    file_df = pd.read_csv(file_,sep=' ',names=col_names, header=None)
    file__=os.path.split(file_)
    file_df['file_name'] = file__[1]
    df = df.append(file_df)
df.to_csv('merged.csv',index=False,header=True)

Exampe of df so far:-

X   Y   SW  i     file_name
4   3   1   1     average map for SWAT [Jan 01,2026]^URTW_L3
2   1   1   2     average map for SWAT [Jan 01,2027]^URTW_L3

使用extract獲取方括號之間的字符串,然后將其轉換為 Timestamp:

date = df['file_name'].str.extract(r'\[(.+)\]', expand=False)
df['date'] = pd.to_datetime(date, format='%b %d,%Y')

print(df)

   X  Y  SW  i                                       file_name       date
0  4  3   1  1      average map for SWAT [Jan 01,2026]^URTW_L3 2026-01-01
1  2  1   1  2      average map for SWAT [Jan 01,2027]^URTW_L3 2027-01-01

使用pathlibdateparser庫:

from pathlib import Path
from dateparser import parse as dateparse

for file in Path("C:\\Users\\x\\AnacondaProjects\\VORONOI\\test").glob("*"):
    file_name = file.stem
    date = dateparse(file_name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM