Python Pandas添加了两个数据框SettingWithCopyWarning

时间:2020-02-04 17:16:59

标签: python arrays pandas slice

我不完全按照官方文档的指示为什么会收到可怕的警告。

我们有一个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

1 个答案:

答案 0 :(得分:0)

注意到另一个问题后,我找到了解决方案。

只要你说

dataframe_A = dataframe_B

您需要谨慎行事,因为Python似乎可以将这两个数据帧紧紧相连。如果您对dataframe_B进行更改,您的dataframe_A也将更改!

我了解的程度足以解决问题,方法是使用.copy(deep=True),其中python将创建完整且独立的副本,以便您可以对其中一个进行更改而不会影响另一个。

在进一步的研究中,对于感兴趣的人来说,它显然与“指针”有关,这是一个稍微复杂的编码概念,其范围超出了此特定问题。