Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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
为什么df1=df不复制python中的数据帧?_Python_Pandas_Dataframe - Fatal编程技术网

为什么df1=df不复制python中的数据帧?

为什么df1=df不复制python中的数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个完全相同的数据帧。[Python] df1=df#其中df中没有名为“SD”的列 但是,当我尝试执行以下操作时,为什么要将列“SD”添加到两个数据帧中 `d={ 'Score1':[62,47,55,74,31,77,85,63,42,32,71,57], 'Score2':[89,87,67,55,47,72,76,79,44,92,99,69], 'Score3':[89,82,12,65,47,42,46,29,42,22,39,29]} df1 =

我有两个完全相同的数据帧。[Python] df1=df#其中df中没有名为“SD”的列 但是,当我尝试执行以下操作时,为什么要将列“SD”添加到两个数据帧中

`d={
     'Score1':[62,47,55,74,31,77,85,63,42,32,71,57],
     'Score2':[89,87,67,55,47,72,76,79,44,92,99,69],
     'Score3':[89,82,12,65,47,42,46,29,42,22,39,29]}
df1 = pd.DataFrame(d)
df=df1
df1['SD'] = df.std(axis=1)`

这是个好问题。简单的回答是,因为您的两个数据帧实际上只是一个pandas对象(如果您熟悉C编程中指针的概念,这里的情况也差不多)。您可以在两个数据帧上使用id()方法来检查这一点。此方法为每个对象提供一个唯一的整数,该整数是一种标识号。 如果希望df和df1是两个不同的对象,则应使用copy.copy()方法


希望这能回答您的问题:)

请提供一个。因为
df
df1
是相同的数据帧。如果您想要一份
df1
,您需要显式复制它:
df=df1.copy()
@ayhan谢谢您的回复,所以如果我理解正确,它们基本上是相同的指针?上述操作只复制了指针。是的,它们指向同一对象(同一对象的不同名称)
df1.copy()
生成并返回一个可以独立修改的新对象。
import copy

df1 = copy.copy(df1)
df1['SD'] = df.std(axis=1)