如何修改数据框列表中的特定值?

时间:2019-05-10 11:49:06

标签: python-3.x

我有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

如何避免这种情况?

1 个答案:

答案 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

并继续其余的操作。