70
votes

I am trying to find some way of appending multiple pandas data frames at once rather than appending them one by one using

df.append(df)

Let us say there are 5 pandas data frames t1, t2, t3, t4, t5. How do I append them at once? Something equivalent of

df = rbind(t1,t2,t3,t4,t5)
4

4 Answers

74
votes

Have you simply tried using a list as argument of append? Or am I missing anything?

import numpy as np
import pandas as pd

dates = np.asarray(pd.date_range('1/1/2000', periods=8))
df1 = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
df2 = df1.copy()
df3 = df1.copy()
df = df1.append([df2, df3])

print df
87
votes

I think you can use concat:

print pd.concat([t1, t2, t3, t4, t5])

Maybe you can ignore_index:

print pd.concat([t1, t2, t3, t4, t5], ignore_index=True)

More info in docs.

0
votes

Suppose we have one main Excel file in which we have 3 sub-sheets named by p1,p2 & p3

We can read all the sheets together as follows:

d = pd.read_excel('p1.xlsx',sheet_name=['p1','p2','p3'])

Now to combine all sheets in one data frame, we can use the following:

df=pd.concat(d[frame] for frame in d.keys())
-3
votes

#Row wise appending

combined_data = pd.concat([t1, t2, t3, t4, t5], axis=0)

This will stack one dataframe over another

#column wise appending

combined_data = pd.concat([t1, t2, t3, t4, t5], axis=1)

This will append the 2nd dataframe on the right side of the 1st dataframe