How to add an empty column to a dataframe?
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 anaxis
keyword rather than explicitly assigning tocolumns
orrows
.
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