-1
votes

Besoin de choisir une "deuxième colonne" à partir de plusieurs fichiers CSV et d'enregistrer toutes les "deuxième colonnes" dans un fichier CSV

J'ai donc 366 fichiers CSV et je souhaite copier leurs deuxièmes colonnes et écrivez-les dans un nouveau fichier CSV. Besoin d'un code pour ce travail. J'ai essayé des codes disponibles ici, mais rien ne fonctionne. S'il vous plaît aider.


2 commentaires

Qu'est-ce que tu as essayé jusque-là?


Veuillez mettre à jour cette question pour fournir les travaux démontrant vos efforts afin que les utilisateurs puissent vous aider à repasser les bugs menant à votre échec. Vous aurez beaucoup plus de chance pour trouver une assistance car cette communauté ne pourrai pas demander aux gens de faire votre travail pour vous. Le travail que vous fournissez doit non seulement démontrer les tentatives que vous avez apportées, mais décrivez également clairement l'échec dont vous avez besoin d'aide pour surmonter.


4 Réponses :


1
votes

En supposant que toutes les 2e colonnes sont la même longueur, vous pouvez simplement faire boucler tous les fichiers. Lisez-les, enregistrez la 2e colonne en mémoire et construisez une nouvelle DF en cours de route.

filenames = ['test.csv', ....]

new_df = pd.DataFrame()

for filename in filenames:
    df = pd.read_csv(filename)
    second_column = df.iloc[:, 1]
    new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
    del(df)

new_df.to_csv('new_csv.csv', index=False)


3 commentaires

Hey Dominik, merci d'avoir partagé le code. A peauflé pour tous les fichiers du dossier; fonctionne bien.


Bonjour Ali, j'apprécierais grandement une uppote à la réponse si j'ai été utile, merci. :)


Je ferai sûrement une fois que j'obtiens> 15 points de réputation. Ne pas oublier. Merci encore.



1
votes

Ceci peut accomplir avec Glob and Pandas:

import glob
import pandas as pd

mylist = [f for f in glob.glob("*.csv")]
df = pd.read_csv(mylist[0]) #create the dataframe from the first csv
df = pd.DataFrame(df.iloc[:,1]) #only keep 2nd column
for x in mylist[1:]: #loop through the rest of the csv files doing the same
    t = pd.read_csv(x)
    colName = pd.DataFrame(t.iloc[:,1]).columns
    df[colName] = pd.DataFrame(t.iloc[:,1])
    df.to_csv('output.csv', index=False)


2 commentaires

Merci d'avoir partagé le code. Il y avait une inadéquation entre CSVLIST et MyList. Cependant, il fonctionne simplement pour le tout premier fichier.


S'il vous plaît marquer correctement si cette solution vous a aidé avec votre problème



0
votes
    import glob
    import pandas as pd

    mylist = [f for f in glob.glob("*.csv")]
    df = pd.read_csv(csvList[0]) #create the dataframe from the first csv
    df = pd.DataFrame(df.iloc[:,0]) #only keep 2nd column
    for x in mylist[1:]: #loop through the rest of the csv files doing the same
        t = pd.read_csv(x)
        colName = pd.DataFrame(t.iloc[:,0]).columns
        df[colName] = pd.DataFrame(t.iloc[:,0])
        df.to_csv('output.csv', index=False)

0 commentaires

1
votes
    filenames = glob.glob(r'D:/CSV_FOLDER' + "/*.csv")

    new_df = pd.DataFrame()

    for filename in filenames:
        df = pd.read_csv(filename)
        second_column = df.iloc[:, 1]
        new_df[f'SECOND_COLUMN_{filename.upper()}'] = second_column
        del(df)

    new_df.to_csv('new_csv.csv', index=False)

1 commentaires

J'ai donc essayé ce code pour plusieurs fichiers dans un dossier et cela fonctionne parfaitement bien.