1
votes

Récupérer un mot du nom du fichier en python

J'ai une liste de 5 fichiers Excel dans un chemin spécifique comme mentionné ci-dessous: 'Z: \\ Ruchika \\ Citymax_Dec06 \\ SVCDs \\ ** \\ * Claypot * .csv'. La liste de 5 fichiers Excel et les chemins sont indiqués ci-dessous

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

Maintenant, j'essaie de récupérer le nom du mois de chaque nom de fichier Excel et de l'ajouter à mes cadres de données selon le code ci-dessous, mais être frappé car je ne peux récupérer que pour le mois de novembre, ce qui est incorrect. Veuillez m'aider

['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']


9 commentaires

Qu'avez-vous essayé? Où es-tu coincé? Ou attendez-vous que les gens fassent votre travail pour vous?


Vous souhaitez donc ajouter à chaque fois une colonne contenant uniquement le mot «décembre»?


@JoshFriedlander Je voulais ajouter une colonne "Mois" dans laquelle elle ne contient que le mot "Décembre" à chaque ligne du bloc de données


@LieRyan J'ai essayé d'utiliser la boucle for et l'instruction if, mais je suis resté coincé au milieu


Vous l'avez dans votre code, df ['Month'] = 'December' . Sur quoi êtes-vous coincé?


@JoshFriedlander Je n'arrive pas à récupérer le mot «décembre» du nom du fichier et à l'attribuer à la colonne «Mois» dans df


@JoshFriedlander J'ai montré le code uniquement pour référence que je dois réaliser


votre question est donc de savoir comment extraire la chaîne December de la chaîne Z: \ Ruchika \ Citymax_Dec06 \ SVCDs \ December - SVCD \ UAE _ Citymax Claypot Burdubai_fullcampaignfile.csv avec un regex ?


@JoshFriedlander oui


3 Réponses :


1
votes

Je suppose que cela peut être n'importe quel mois, alors pourquoi ne pas vérifier pendant des mois:

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)


0 commentaires

1
votes
month = [x for x in month_list if x in my_filename][0]
my_df['month'] = month

0 commentaires

1
votes

Vous pouvez utiliser str.split avec pd.DataFrame. attribuer :

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 commentaires