Adding a column to a DataFrame always creates a copy of a Series
I don't know if this is a valid behaviour, but it seems to me like a bug?

``` python
>>> s = pd.Series([1,2,3])
>>> df = pd.DataFrame(s)
>>> df.index is s.index
True
>>> df.iloc[0, 0] = 33
>>> df
    0
0  33
1   2
2   3
>>> s
0    33
1     2
2     3
dtype: int64
```

So far so good.

But if I do:

``` python
>>> s = pd.Series([1,2,3])
>>> df = pd.DataFrame(index=s.index)
>>> df[0] = s
>>> df.index is s.index
True
>>> df.iloc[0, 0] = 33
>>> df
    0
0  33
1   2
2   3
>>> s
0    1
1    2
2    3
dtype: int64
```

Basically there is no way to add a column to the DataFrame without creating a copy of the data. This seems like a suboptimal behaviour since the operation:

``` python
df['c'] = df['a'] + df['b']
```

First create a Series object in the memory, and then create a copy of it that get's assigned to the DataFrame column `c`.

I also understand why this can be a desired behaviour, so maybe this issue could be reformulated into a question: Is there a way to add a column to a DataFrame without creating a copy of the data.
