## Question

Asked By – yemu

Given a DataFrame:

```
np.random.seed(0)
df = pd.DataFrame(np.random.randn(3, 3), columns=list('ABC'), index=[1, 2, 3])
df
A B C
1 1.764052 0.400157 0.978738
2 2.240893 1.867558 -0.977278
3 0.950088 -0.151357 -0.103219
```

What is the simplest way to add a new column containing a constant value eg 0?

```
A B C new
1 1.764052 0.400157 0.978738 0
2 2.240893 1.867558 -0.977278 0
3 0.950088 -0.151357 -0.103219 0
```

This is my solution, but I don’t know why this puts NaN into ‘new’ column?

```
df['new'] = pd.Series([0 for x in range(len(df.index))])
A B C new
1 1.764052 0.400157 0.978738 0.0
2 2.240893 1.867558 -0.977278 0.0
3 0.950088 -0.151357 -0.103219 NaN
```

**Now we will see solution for issue: Add column with constant value to pandas dataframe [duplicate] **

## Answer

The reason this puts `NaN`

into a column is because `df.index`

and the `Index`

of your right-hand-side object are different. @zach shows the proper way to assign a new column of zeros. In general, `pandas`

tries to do as much alignment of indices as possible. One downside is that when indices are not aligned you get `NaN`

wherever they *aren’t* aligned. Play around with the `reindex`

and `align`

methods to gain some intuition for alignment works with objects that have partially, totally, and not-aligned-all aligned indices. For example here’s how `DataFrame.align()`

works with partially aligned indices:

```
In [7]: from pandas import DataFrame
In [8]: from numpy.random import randint
In [9]: df = DataFrame({'a': randint(3, size=10)})
In [10]:
In [10]: df
Out[10]:
a
0 0
1 2
2 0
3 1
4 0
5 0
6 0
7 0
8 0
9 0
In [11]: s = df.a[:5]
In [12]: dfa, sa = df.align(s, axis=0)
In [13]: dfa
Out[13]:
a
0 0
1 2
2 0
3 1
4 0
5 0
6 0
7 0
8 0
9 0
In [14]: sa
Out[14]:
0 0
1 2
2 0
3 1
4 0
5 NaN
6 NaN
7 NaN
8 NaN
9 NaN
Name: a, dtype: float64
```

This question is answered By – Phillip Cloud

**This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 **