Appending two dataframes with same columns, different order

redrubia picture redrubia · Jan 29, 2014 · Viewed 67.2k times · Source

I have two pandas dataframes.

noclickDF = DataFrame([[0,123,321],[0,1543,432]], columns=['click', 'id','location'])
clickDF = DataFrame([[1,123,421],[1,1543,436]], columns=['click', 'location','id'])

I simply want to join such that the final DF will look like:

click  |  id   |   location
0         123        321
0         1543       432
1         421        123
1         436       1543

As you can see the column names of both original DF's are the same, but not in the same order. Also there is no join in a column.

Answer

unutbu picture unutbu · Jan 29, 2014

You could also use pd.concat:

In [36]: pd.concat([noclickDF, clickDF], ignore_index=True)
Out[36]: 
   click    id  location
0      0   123       321
1      0  1543       432
2      1   421       123
3      1   436      1543

Under the hood, DataFrame.append calls pd.concat. DataFrame.append has code for handling various types of input, such as Series, tuples, lists and dicts. If you pass it a DataFrame, it passes straight through to pd.concat, so using pd.concat is a bit more direct.