How to add an empty column to a dataframe? How to add an empty column to a dataframe? python python

How to add an empty column to a dataframe?


If I understand correctly, assignment should fill:

>>> import numpy as np>>> import pandas as pd>>> df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})>>> df   A  B0  1  21  2  32  3  4>>> df["C"] = "">>> df["D"] = np.nan>>> df   A  B C   D0  1  2   NaN1  2  3   NaN2  3  4   NaN


To add to DSM's answer and building on this associated question, I'd split the approach into two cases:

  • Adding a single column: Just assign empty values to the new columns, e.g. df['C'] = np.nan

  • Adding multiple columns: I'd suggest using the .reindex(columns=[...]) method of pandas to add the new columns to the dataframe's column index. This also works for adding multiple new rows with .reindex(rows=[...]). Note that newer versions of Pandas (v>0.20) allow you to specify an axis keyword rather than explicitly assigning to columns or rows.

Here is an example adding multiple columns:

mydf = mydf.reindex(columns = mydf.columns.tolist() + ['newcol1','newcol2'])

or

mydf = mydf.reindex(mydf.columns.tolist() + ['newcol1','newcol2'], axis=1)  # version > 0.20.0

You can also always concatenate a new (empty) dataframe to the existing dataframe, but that doesn't feel as pythonic to me :)


an even simpler solution is:

df = df.reindex(columns = header_list)                

where "header_list" is a list of the headers you want to appear.

any header included in the list that is not found already in the dataframe will be added with blank cells below.

so if

header_list = ['a','b','c', 'd']

then c and d will be added as columns with blank cells