title: pandas.DataFrame.copy(deep=True) doesn't actually create deep copy
body: <p>I've been experimenting for a while with pd.Series and pd.DataFrame and faced some strange problem. Let's say I have the following pd.DataFrame:</p>
  
  <p><code>df = pd.DataFrame({'col':[[1,2,3]]})</code></p>
  
  <p>Notice, that this dataframe includes column containing list. I want to modify this dataframe's copy and return its modified version so that the initial one will remain unchanged. For the sake of simplicity, let's say I want to add integer '4' in its cell. </p>
  
  <p>I've tried the following code:</p>
  
  <pre><code>def modify(df):
      dfc = df.copy(deep=True)
      dfc['col'].iloc[0].append(4)
      return dfc
  
  modify(df)
  print(df)
  </code></pre>
  
  <p>The problem is that, besides the new copy <code>dfc</code>, the initial DataFrame <code>df</code> is also modified. Why? What should I do to prevent initial dataframes from modifying? My pandas version is 0.25.0</p>