Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中的Drop列:输出不一致[已解决:副本与DF的引用/指针]_Python_Pandas - Fatal编程技术网

Python 数据帧中的Drop列:输出不一致[已解决:副本与DF的引用/指针]

Python 数据帧中的Drop列:输出不一致[已解决:副本与DF的引用/指针],python,pandas,Python,Pandas,问题:在删除下面标记为“幸福度”的列时,我也将其删除到父数据框中。这不应该发生,想澄清一下吗 A=df\u新 A.drop(‘幸福度评分’,轴=1,原地=True) 这是输出:正如您所看到的,该列在df_new中也被删除;是不是inplace=True意味着它只在A数据帧中被删除 注意: 我可以通过改变代码来解决这个问题;现在输出与预期一致 B=df_new.drop('Happiness_Score',axis=1) 实际上,当您执行A=df\u new 您不是在创建数据帧的副本,而只是一

问题:在删除下面标记为“幸福度”的列时,我也将其删除到父数据框中。这不应该发生,想澄清一下吗

A=df\u新
A.drop(‘幸福度评分’,轴=1,原地=True)
这是输出:正如您所看到的,该列在
df_new
中也被删除;是不是
inplace=True
意味着它只在
A
数据帧中被删除

注意: 我可以通过改变代码来解决这个问题;现在输出与预期一致

B=df_new.drop('Happiness_Score',axis=1)

实际上,当您执行
A=df\u new
您不是在创建数据帧的副本,而只是一个指针。因此,要正确执行此操作,应使用
A=df\u new.copy()

当您选择子集或索引时:
a=df\u new[条件]
然后它会创建数据帧切片的副本,因此您的解决方法也可以工作。

变量a是对df\u new的引用。尝试通过执行df_new或df_new.copy()的完整切片来创建。A=def_new创建对原始
def_new
的新引用,而不是新副本。您正在将
A
绑定到同一个对象
def_new
中,并保留对的引用。在引用中进行修改时会发生什么?它反映在原始对象中。我将用一个例子来说明这一点

orgList = [1,2,3,4,5]
bkpList = orgList
print(bkpList is orgList) #OUTPUT: True
这是因为两个变量都指向同一个列表。修改任何一个,更改将反映在原始列表中。在dataframe案例中也可以观察到同样的情况

解决方案:保留数据帧的单独副本