A weird thing
I wrote the following code:

```
def volchange(df,col):
    del df[col]
    ext = pd.DataFrame(np.random.randn(4,2),columns=['add1','add2'])
    df = df.join(ext)
    return df
aa = pd.DataFrame(np.random.randn(4,2),columns=['a','b'])
cc = aa
bb = volchange(cc,'a')
```

The result from running this code is:
bb has 3 columns, 'b','add1','add2', that is what we expected.
both aa and cc only have column 'b'. This is hard for me to understand:
I guess 'cc=aa' only assigns the reference of aa to cc. This is OK...
but if we assume we passes by reference to the function volchange(df,col), why only the command 'del df[col]' has effect on df, while the command 'df=df.join(ext)' has no effect on df, hence cc?
