Получить слово из имени файла в Python - PullRequest
0 голосов
/ 08 января 2019

У меня есть список из 5 файлов Excel по указанному пути, как указано ниже: 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\**\\*Claypot*.csv'. Список из 5 файлов Excel и пути указаны ниже

['Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\December - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\January2019 - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\November - SVCD\\UAE _ Citymax _ Claypot_BD_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\October - SVCD\\UAE _ Citymax _Claypot_ Burdubai_fullcampaignfile.csv',
 'Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\sept - svcd\\UAE _ Claypot _ Burdubai_fullcampaignfile.csv']

Теперь я пытаюсь извлечь название месяца из каждого имени файла Excel и добавить к своим фреймам данных, как показано ниже, но мне не по себе, потому что я могу получить только за ноябрьский месяц, что неверно. Пожалуйста, помогите мне

m=['November','December','October','September','August']
    def extract(folderpath):
        final=glob.glob(folderpath)
        frames = []
        for file in final:
            j=0
            df = pd.read_csv(file, error_bad_lines=False)
            df['Month']=m[j]
            frames.append(df)
            j=j+1
        mergedfile = pd.concat(frames)
        return mergedfile

a=extract('Z:\\Ruchika\\Citymax_Dec06\\SVCDs\\**\\*Claypot*.csv')

Input : a.shape
Ouput : (3232487, 31)

Input : a['Month'].value_counts()
Output : November   3232487
         Name: Month, dtype: int64

Ответы [ 3 ]

0 голосов
/ 08 января 2019
month = [x for x in month_list if x in my_filename][0]
my_df['month'] = month
0 голосов
/ 08 января 2019

Вы можете использовать str.split с pd.DataFrame.assign:

file_path = r'Z:\Ruchika\Citymax_Dec06\SVCDs\December - SVCD\UAE _ Citymax Claypot Burdubai_fullcampaignfile.csv'

file_month = file_path.rsplit('\\', 2)[1].split(' - ')[0]  # December
df = pd.read_csv(file_path).assign(Month=file_month)
0 голосов
/ 08 января 2019

Полагаю, это может быть любой месяц, так почему бы просто не проверить месяцы:

filename = r'Z:\Ruchika\Citymax_Dec06\SVCDs\December - SVCD\UAE _ Citymax Claypot Burdubai_fullcampaignfile.csv'

for month in ['October', 'November', 'December']: # List of months
    if month in filename:
        print('Month is:', month)
...