我有2个数据帧,分别表示A和B的点,列为X,Y,Z。现在,我已经创建了列表(点)的列表(points_list)。列表中的每个索引都包含2个数据帧。 现在,当我尝试从list()points_list)中的元素修改点A的X [0]值时。我也修改了B点的X值。
point = pd.DataFrame(data ={'X': [0]*2, 'Y': [0]*2, 'Z': [0]*2})
points = []
points_list = []
points.append(point) # for A
points.append(point) # for B
points_list.append(points)
points_list.append(points)
points_list[0][0].X[0] = 10
print(points_list[0][0].X[0]) # gives 10
print(points_list[1][0].X[0]) # gives 10 which I want to avoid
如何避免这种情况?
答案 0 :(得分:0)
points
中的point_list
都指向内存中的相同位置。在deepcopy
中创建points
,然后附加到points_list
。
>>> import copy
>>> points_list.append(points)
>>> points_list.append(copy.deepcopy(points)) # --> this line is modified
>>> points_list[0][0].X[0] = 10
>>> print(points_list[0][0].X[0]) # gives 10
10
>>> print(points_list[1][0].X[0]) # --> is not 10 anymore
0
并继续其余的操作。