繁体   English   中英

一个pandas dataframe的深拷贝的列名更改 更改原始dataframe的列名

[英]Column name change of a deep copy of a pandas dataframe changes the column name of the original dataframe

我的理解是,如果在 pandas dataframe 的深层副本中发生了某些变化,那不应该影响制作副本的原始 dataframe。

但是当运行下面的代码时,可以看到 df1 的列名也发生了变化。 但我只想更改 df2 中的列名。

df1 = pd.DataFrame({'col1':[1,2,3,4],'col2':[2,3,4,3],'col3':[4,3,1,5]})
df2 = df1.copy()
# Change the column name using column index rather than the rename function
df2.columns.values[1] = 'new_col_name'

我知道我们可以使用重命名 function 但我有一个需要使用列索引重命名的要求。 你能解释一下上面发生了什么,我怎样才能避免这个问题?

请参阅 pd.copy() 文档的最后一部分:

请注意,当复制包含 Python 对象的 object 时,深层复制将复制数据,但不会递归复制。 更新嵌套数据 object 将反映在深层副本中。

DataFrame 的列 object 不包含在深层副本中。

一种解决方法是使用copy.deepcopy

import copy
df2 = pd.DataFrame(columns = copy.deepcopy(df1.columns), data = copy.deepcopy(df1.values))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM