一个新问题,但我真的很困惑。。。 假设有这样的数据帧:
>>>test = pd.DataFrame({'a':[1,1,0,0],'b':[1,1,0,0]})
>>>test
a b
0 1 1
1 1 1
2 0 0
3 0 0
运行以下代码
test.loc[2:] = 1
第3行和第4行的数据将设置为1,数据帧将变为:
a b
0 1 1
1 1 1
2 1 1
3 1 1
但如果先将子集设置为varable,那么dataframe不会改变
temp = test.loc[2:]
temp = 2 #nothing changed, just the temp variable set to 2
这两个数据帧之间的区别是什么?你知道吗
这与loc无关。这是python中赋值工作的标准方式。数据帧是一个对象。
loc
是dataframe对象中的一个方法。作为例子,当cd2的引用被创建时,cd3是cd3的引用。a
保持不变,直到您将赋值更改为变量a
。你知道吗Python按值分配一切。每个变量都是指向对象的指针。你知道dataframe是一个永远不会被复制的对象,除非你显式地复制它。因此,当您将temp分配给数据帧的一个片段时,您正在将temp的值重置为指向2。因此重置值。尽量保持它的功能性。你知道吗
相关问题 更多 >
编程相关推荐