1

I have multiple csv files that I would like to combine into one df.

They are all in this general format, with two index columns:

                                           1     2
CU0112-005287-7 Output Energy, (Wh/h)   0.064   0.066
CU0112-005287-7 Lights (Wh)                0     0

                                            1     2
CU0112-001885-L Output Energy, (Wh/h)   1.33    1.317
CU0112-001885-L Lights (Wh)             1.33    1.317

and so on...

The combined df would be:

                                           1     2
CU0112-005287-7 Output Energy, (Wh/h)   0.064   0.066
CU0112-005287-7 Lights (Wh)                0     0
CU0112-001885-L Output Energy, (Wh/h)   1.33    1.317
CU0112-001885-L Lights (Wh)             1.33    1.317

I am trying this code:

import os
import pandas as pd
import glob

files = glob.glob(r'2017-12-05\Aggregated\*.csv')   //folder which contains all the csv files

df = pd.merge([pd.read_csv(f, index_col=[0,1])for f in files], how='outer')

df.to_csv(r'\merged.csv')

But I am getting this error:

TypeError: merge() takes at least 2 arguments (2 given)

3 Answers 3

4

I think you need concat instead merge:

df = pd.concat([pd.read_csv(f, index_col=[0,1]) for f in files])
Sign up to request clarification or add additional context in comments.

Comments

0

You can try the following. I made some changes to the DataFrame combining logic

import os
import pandas as pd
import glob

files = glob.glob(r'2017-12-05\Aggregated\*.csv')   //folder which contains all the csv files

df = reduce(lambda df1,df2: pd.merge(df1,df2,on='id',how='outer'),[pd.read_csv(f, index_col=[0,1])for f in files] )

df.to_csv(r'\merged.csv')

Comments

0

A simple way:

Creating a list with the names of csvs:

files=listdir()
csvs=list()
for file in files:
    if file.endswith(".csv"):
        csvs.append(file)

concatenate the csvs:

data=pd.DataFrame()
for i in csvs:
    table=pd.read_csv(i)
    data=pd.concat([data,table])

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.