【发布时间】:2015-07-31 19:57:53
【问题描述】:
下面的命令展示了如何给切片赋值:
In [81]: a=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])
In [82]: a
Out[82]:
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
In [83]: a.loc[1] = [10,11,12]
In [84]: a
Out[84]:
0 1 2
0 1 2 3
1 10 11 12
2 7 8 9
但是,我需要将其归因于变量指向的切片。我试过了
In [91]: row2 = a.loc[2]
In [92]: row2 = [13,14,15]
In [93]: a
Out[93]:
0 1 2
0 1 2 3
1 10 11 12
2 7 8 9
In [94]: row2
Out[94]: [13, 14, 15]
此时,我希望“a”的值为
In [96]: a
Out[96]:
0 1 2
0 1 2 3
1 10 11 12
2 13 14 15
很明显,row2 被视为切片的副本,而不是切片本身。
所以,我的问题是:如何创建切片点的变量,并且可以用来将值赋予原始矩阵的元素?
【问题讨论】:
-
我建议你不能(AFAIK)这是首先引入索引方法以明确表示你想修改原始 df 的原因。您最好使用
row2存储标签/索引值,然后调用a.loc[row2]= [13,14,15],因为这将是可读且正确的 -
这个
row2 = [13,14,15]创建了一个全新的对象。如果两个名称obj1和obj2指向同一个对象,您可以检查obj1 is obj2。您也可以使用id(obj)查找对象ID。
标签: python pandas copy dataframe slice