熊猫系列副本不会创建副本

时间:2019-09-09 12:51:01

标签: pandas copy deep-copy

所以我对pd.Series.copy()的行为非常困惑。 根据{{​​3}},它将创建一个深层副本,因此更改副本的值将使原始行(和数据帧)保持完整。 那么,为什么这个返回True呢?

for i, row in df.iterrows():        
    q = row.copy()
    q.col.append(['foo'])
    return row.col == q.col

1 个答案:

答案 0 :(得分:0)

首先,您应该注意q是pd.Series。

根据pd.Series.copy的the documentation

”进行深层复制,包括数据和索引的副本。deep = False时,不会复制索引或数据。     请注意,当复制deep = True数据时,将不会递归地复制实际的python对象,而仅是对该对象的引用。这与标准库中的copy.deepcopy相对,后者以递归方式复制对象数据。“

这就是为什么仅复制对列表的引用而不复制列表本身的原因。您应该在手动复制列表的地方应用自定义功能。