Python 3.x “复制切片”警告是否不一致?

Python 3.x “复制切片”警告是否不一致?,python-3.x,pandas,Python 3.x,Pandas,我知道有一百万篇关于熊猫数据帧复制切片警告的帖子,我已经对此进行了研究。。。但是我仍然不明白为什么警告没有在下面的第10行调用,而是在下面的第15行调用。使用Python 3.8.3和1.0.5 import pandas as pd #### Example DataFrame myid = [1, 1, 1, 2, 2] myorder = [3, 2, 1, 2, 1] y = [3642, 3640, 3632, 3628, 3608] x = [11811, 11812, 11807

我知道有一百万篇关于熊猫数据帧复制切片警告的帖子,我已经对此进行了研究。。。但是我仍然不明白为什么警告没有在下面的第10行调用,而是在下面的第15行调用。使用Python 3.8.3和1.0.5

import pandas as pd

#### Example DataFrame
myid = [1, 1, 1, 2, 2]
myorder = [3, 2, 1, 2, 1]
y = [3642, 3640, 3632, 3628, 3608]
x = [11811, 11812, 11807, 11795, 11795]
df = pd.DataFrame(list(zip(myid, myorder, x, y)), 
                  columns =['myid', 'myorder', 'x', 'y']) 
df.sort_values(by=['myid', 'myorder'], inplace=True) ## LINE 10
df.reset_index(drop=True, inplace=True)

idval =2
tempdf = df[mygdf.myid == idval]
tempdf.sort_values(by=['myid', 'myorder'], inplace=True) ## LINE 15
tempdf.reset_index(drop=True, inplace=True)
这一行:

tempdf=df[mygdf.myid==idval]

正在
df
上创建名为
tempdf
的视图,基础数据尚未复制,请将
tempdf
视为应用于
df
的预记录筛选器,进一步的更改将仅应用于符合筛选器的行

这意味着如果您更新
tempdf
,您将更新
df
——因此出现警告

要避免警告,您需要执行以下操作,这将迫使
df
tempdf
使用不同的底层数据结构:

tempdf=df[mygdf.myid==idval].copy()

现在对
tempdf
的更改将不会对
df
产生影响,因此您的警告将消失。

此行:

tempdf=df[mygdf.myid==idval]

正在
df
上创建名为
tempdf
的视图,基础数据尚未复制,请将
tempdf
视为应用于
df
的预记录筛选器,进一步的更改将仅应用于符合筛选器的行

这意味着如果您更新
tempdf
,您将更新
df
——因此出现警告

要避免警告,您需要执行以下操作,这将迫使
df
tempdf
使用不同的底层数据结构:

tempdf=df[mygdf.myid==idval].copy()

现在对
tempdf
的更改将不会对
df
产生影响,因此您的警告将消失