pandas初学(1) :DataFrame 赋值a=b,修改其中一个,两个值会同步变化
问题提出
初学时遇到了一个问题,我想拷贝一个dataframe的数据,在修改拷贝后的新变量.
本来想把df2的值传给df3,再修改df3,代码如下
#利用数组创建DataFrame
data2 = np.random.randn(3, 4)
df2 = pd.DataFrame(data2, columns=['column1', 'column2', 'column3', 'column4'])
# #DataFrame的默认index是从0开始,同时支持用户自己创建index
df3=df2
df3.set_index('column1', inplace=True)
结果,df2的数据也被改成和df3一样的了
解决方案
https://zhidao.baidu.com/question/2017112737844952668.html
评论大佬说是因为dataframe是数据引用,利用[:]取值再赋值,就不会修改原来的数据了
修改后的代码
#利用数组创建DataFrame
data2 = np.random.randn(3, 4)
df2 = pd.DataFrame(data2, columns=['column1', 'column2', 'column3', 'column4'])
# #DataFrame的默认index是从0开始,同时支持用户自己创建index
df3=df2[:]
df3.set_index('column1', inplace=True)
结果,df2数据没被修改