npm
npm

Reputation: 653

Write to multiple csv using glob

I am working with lots of csv files and need to add column. I tried glob, for example:

import glob

filenames = sorted(glob.glob('./DATA1/*2018*.csv'))
filenames = filenames[0:10]

import numpy as np
import pandas as pd

for f in filenames:
    df = pd.read_csv(f, header=None, index_col=None)
    df.columns = ['Date','Signal','Data','Code']
 #this is what I should add to all csv files   
    df["ID"] = df["Data"].str.slice(0,2) 

and I need a way to save the file back to csv (not concatenated) with different name such as "file01edited.csv" after I add the column to each csv file.

Upvotes: 2

Views: 698

Answers (1)

jezrael
jezrael

Reputation: 863156

Use to_csv with f-strings for change file names:

for f in filenames:
    df = pd.read_csv(f, names=['Date','Signal','Data','Code'], index_col=None)
 #this is what I should add to all csv files   
    df["ID"] = df["Data"].str.slice(0,2) 
    #python 3.6+
    df.to_csv(f'{f[:-4]}edited.csv', index=False)
    #python bellow 3.6
    #df.to_csv('{}edited.csv'.format(f[:-4]), index=False)

Upvotes: 1

Related Questions