Equivalent of pandas .append() method, which allows method chaining

168 Views Asked by At

Now that append() is removed in pandas 2.0, what is a short alternative to append() allowing method chaining? The "What’s new in 2.0.0" section of pandas says:

Removed deprecated Series.append(), DataFrame.append(), use concat() instead (GH 35407)

I am looking for something like below to add one row, but within a method chain.

import pandas as pd

df = pd.DataFrame([[4, 5, 6],
                   [7, 8, 9],
                   ])

df.loc[df.index.size] = [10, 20, 30]
1

There are 1 best solutions below

0
mozway On BEST ANSWER

Since you want to use method chaining, use pipe and concat:

out = (df
      #.some_method()
       .pipe(lambda d: pd.concat(
             [d, pd.DataFrame([[10, 20, 30]],
                              columns=df.columns)],
             ignore_index=True)
             )
      #.some_other_method()
      )

Or, if adding the row is the first step:

out = (pd.concat([d, pd.DataFrame([[10, 20, 30]],
                                   columns=df.columns)],
                 ignore_index=True)
        #.other_methods()
      )

Output:

    0   1   2
0   4   5   6
1   7   8   9
2   1   6   4
3  10  20  30

Note that adding a new row is expensive as this creates a full new DataFrame. It's fine if you do it once or twice but don't do it in a loop or this will be very slow for large datasets.