一个新问题,但我真的很困惑...... 假设有这样的数据帧:
>>>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,那么数据帧不会改变,
temp = test.loc[2:]
temp = 2 #nothing changed, just the temp variable set to 2
那么这两个代码之间有什么区别,为什么第一个代码改变了数据框?
答案 0 :(得分:1)
Python按值分配所有内容。每个变量都是指向对象的指针。你是数据帧是一个永远不会被复制的对象,除非你明确地复制它。因此,当您为数据帧的切片分配temp时,您将重置temp的值以指向2.因此重置该值。尽量保持功能性/ pythonic。