我不完全按照官方文档的指示为什么会收到可怕的警告。
我们有一个dataframe
的{{1}}
a
首先,我们创建一个“持有人” a = pd.DataFrame(data = [['Tom',1],
['Tom',1],
['Dick',1],
['Dick',1],
['Harry',1],
['Harry',1]], columns = ['Col1', 'Col2'])
a
Out[377]:
Col1 Col2
0 Tom 1
1 Tom 1
2 Dick 1
3 Dick 1
4 Harry 1
5 Harry 1
:
dataframe
然后我们创建holder = a
的子集:
a
我们创建了另一个子集c = a.loc[a['Col1'] == 'Tom',:]
c
Out[379]:
Col1 Col2
0 Tom 1
1 Tom 1
,该子集将添加到先前子集d
的(一个切片)中,但是一旦我们尝试将c
添加到{ {1}},我们得到警告:
d
我想了解自己在做错什么,因为我经常使用这种逻辑(来自R,那里的一切都不是c
)
答案 0 :(得分:0)
注意到另一个问题后,我找到了解决方案。
只要你说
dataframe_A = dataframe_B
您需要谨慎行事,因为Python似乎可以将这两个数据帧紧紧相连。如果您对dataframe_B
进行更改,您的dataframe_A
也将更改!
我了解的程度足以解决问题,方法是使用.copy(deep=True)
,其中python将创建完整且独立的副本,以便您可以对其中一个进行更改而不会影响另一个。
在进一步的研究中,对于感兴趣的人来说,它显然与“指针”有关,这是一个稍微复杂的编码概念,其范围超出了此特定问题。