我正在使用此代码来提取两个具有相似命名约定的CSV,将它们的文件名放在“文件”列中,并将数据帧连接到一个称为NatHrs的数据帧中。
import glob
from pathlib import Path
path = r'C:\Users\ThisUser\Desktop\AC Mbr Analysis'
all_files = glob.glob(path + '\\Natl_hours_YTD_OC_*.csv')
Nat_dfs = []
for file in all_files:
df = pd.read_csv(file, index_col=None, encoding='windows-1252', header=1 )
df['File'] = file
Nat_dfs.append(df)
NatHrs = pd.concat(Nat_dfs)
[现在,我想获取“文件”列,该列返回一个文件名对象,其条目类似于“ C:\ Users \ ThisUser \ Desktop \ AC Mbr Analysis \ Natl_hours_YTD_OC_2018-2019”,仅提取文件名的末尾- -在这种情况下为“ 2018-2019”-并将这些角色放入新的栏目“计划年”中,以反映条目“ 2018-2019”。我在处理字符串或系列方面没有成功-我应该使用path.replace吗?我迷路了。当我描述该列时,我想解析...
NatHrs['File'].describe
...我明白了:
Name: File, dtype: object>
您可以使用正则表达式在字符串中查找子字符串:
import re
string = r"C:\Users\ThisUser\Desktop\AC Mbr Analysis\Natl_hours_YTD_OC_2018-2019"
short = string.split('\\')[-1]
substring = re.search('\d+[-]*\d+',short).group()
print(substring)
可能想详细说明模式如何变化。会永远是“年”吗?可以只是“年份”吗?然后可能必须更改正则表达式。