Год всегда в одном и том же месте - [-9:-5]
- отсчитывает символы с конца строки.
Если вы разделите имя файла с помощью " "
, вы получите список и месяц будет иметь индекс -2
import pandas as pd
df = pd.DataFrame({
'filename':[
"102 RB loss Chamdor June 2018.xlsx",
"102 RB loss Chamdor Januray 2018.xlsx",
]})
df['year'] = df['filename'].str[-9:-5]
df['month'] = df['filename'].apply(lambda x:x.split(" ")[-2])
print(df)
Результат
filename year month
0 102 RB loss Chamdor June 2018.xlsx 2018 June
1 102 RB loss Chamdor Januray 2018.xlsx 2018 Januray
РЕДАКТИРОВАТЬ: как сказано @SpghttCd вместо apply()
вы можете использовать
df['month'] = df['filename'].str.split().str[-2]
Если у вас есть более сложные имена, вы можете попробовать регулярное выражение
df['year'] = df['filename'].str.extract('(\d{4})')
df['month'] = df['filename'].str.extract('(June|Januray|names|of|other|months)')