所以我对pd.Series.copy()
的行为非常困惑。
根据{{3}},它将创建一个深层副本,因此更改副本的值将使原始行(和数据帧)保持完整。
那么,为什么这个返回True呢?
for i, row in df.iterrows():
q = row.copy()
q.col.append(['foo'])
return row.col == q.col
答案 0 :(得分:0)
首先,您应该注意q是pd.Series。
根据pd.Series.copy的the documentation
”进行深层复制,包括数据和索引的副本。deep = False时,不会复制索引或数据。 请注意,当复制deep = True数据时,将不会递归地复制实际的python对象,而仅是对该对象的引用。这与标准库中的copy.deepcopy相对,后者以递归方式复制对象数据。“
这就是为什么仅复制对列表的引用而不复制列表本身的原因。您应该在手动复制列表的地方应用自定义功能。