[英]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
使用pathlib
和dateparser
庫:
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.