Reputation: 85
I am trying to add a column with a constant value to a dataframe that does not have any rows. It appears this isn't as easy as it would be if the rows were populated. How would one accomplish this?
df = pd.DataFrame(columns = ['a','b','c'])
df['foo'] = 'bar'
Should yield
a b c foo
0 NaN NaN NaN bar
instead it yields
a b c
Upvotes: 0
Views: 467
Reputation: 23227
You can use .loc
specifying the row index and column label, as follows:
df.loc[0, 'foo'] = 'bar'
Result:
print(df)
a b c foo
0 NaN NaN NaN bar
You can also use:
df['foo'] = ['bar']
Result:
print(df)
a b c foo
0 NaN NaN NaN bar
If you have a bunch of a mix of empty and non-empty dataframes and you want to assign new column to it, you can try the following code:
df['foo'] = ['bar'] * (df.shape[0] if df.shape[0] else 1)
This will assign the constant with the same length (number of rows) for non-empty dataframes and will also assign one new row for empty dataframe with the constant value for the column.
Upvotes: 1