253

I have a initial dataframe D. I extract two data frames from it like this:

A = D[D.label == k]
B = D[D.label != k]

I want to combine A and B into one DataFrame. The order of the data is not important. However, when we sample A and B from D, they retain their indexes from D.

2
  • Does this answer your question? Pandas Merging 101 Commented Nov 2, 2020 at 14:41
  • From pandas v1.4.1: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead. Commented Apr 28, 2022 at 17:06

9 Answers 9

260

Updated in 2025

df_merged = pandas.concat([df1, df2], ignore_index=True, sort=False)

**
OLD ANSWER**

DEPRECATED: DataFrame.append and Series.append were deprecated in v1.4.0.


Use append:

df_merged = df1.append(df2, ignore_index=True)

And to keep their indexes, set ignore_index=False.

Sign up to request clarification or add additional context in comments.

6 Comments

This works. It creates a new DataFrame though. Is there a way to do it inline? That would be nice for when I'm loading huge amounts of data from a database in batches so I could iteratively update the DataFrame without creating a copy each time.
Yes, that's possible, see: stackoverflow.com/a/46661368/5717580
From pandas v1.4.1: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
If this is deprecated why is it the accepted answer?
because it was answered years ago ... but i went ahead and updated it with the pandas.concat
Nice! Thank you.
255

Use pd.concat to join multiple dataframes:

df_merged = pd.concat([df1, df2], ignore_index=True, sort=False)

1 Comment

I want to use this, but I'm trying to concatenate two columns of the same name o_O
107

Merge across rows:

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

Merge across columns:

df_col_merged = pd.concat([df_a, df_b], axis=1)

Comments

39

If you're working with big data and need to concatenate multiple datasets calling concat many times can get performance-intensive.

If you don't want to create a new df each time, you can instead aggregate the changes and call concat only once:

frames = [df_A, df_B]  # Or perform operations on the DFs
result = pd.concat(frames)

This is pointed out in the pandas docs under concatenating objects at the bottom of the section):

Note: It is worth noting however, that concat (and therefore append) makes a full copy of the data, and that constantly reusing this function can create a significant performance hit. If you need to use the operation over several datasets, use a list comprehension.

Comments

7

If you want to update/replace the values of first dataframe df1 with the values of second dataframe df2. you can do it by following steps —

Step 1: Set index of the first dataframe (df1)

df1.set_index('id')

Step 2: Set index of the second dataframe (df2)

df2.set_index('id')

and finally update the dataframe using the following snippet —

df1.update(df2)

Comments

3

To join 2 pandas dataframes by column, using their indices as the join key, you can do this:

both = a.join(b)

And if you want to join multiple DataFrames, Series, or a mixture of them, by their index, just put them in a list, e.g.,:

everything = a.join([b, c, d])

See the pandas docs for DataFrame.join().

Comments

3

Both the dataframe should have same column name else instead of appending records by row wise, it will append as separate columns.

df = df.append(df1,ignore_index=True)
df = pd.concat([df1,df2], ignore_index=True)

Comments

1
# collect excel content into list of dataframes
data = []
for excel_file in excel_files:
    data.append(pd.read_excel(excel_file, engine="openpyxl"))

# concatenate dataframes horizontally
df = pd.concat(data, axis=1)
# save combined data to excel
df.to_excel(excelAutoNamed, index=False)

You can try the above when you are appending horizontally! Hope this helps sum1

Comments

0

Use this code to attach two Pandas Data Frames horizontally:

df3 = pd.concat([df1, df2],axis=1, ignore_index=True, sort=False)

You must specify around what axis you intend to merge two frames.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.