通过变量复制数据框与通过列复制变量

时间:2019-07-05 17:56:05

标签: python python-3.x pandas dataframe

我一直在玩python,并了解通过.copy函数复制数据帧的概念,而不是仅仅将其重新分配给变量。

假设我们有以下数据框: dfx:

   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10       Perfect
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

dfx2 = dfx.drop("Score1",axis = 1)

dfx2:

   Name   Score2  Score3        Score4
0  Jack  Perfect      10       Perfect
1  Jill       10      10  Not Finished
2  Jane       10      10             5
3   Tom       15      10             5

再次运行dfx仍会返回原始数据帧

   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10       Perfect
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

重新分配是否也应从原始数据集中删除“ Score1”列?

但是,运行以下命令:

dfx3 = dfx

dfx3

   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10       Perfect
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

dfx3.loc[0,"Score4"] = "BAD"

dfx3

   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10           BAD
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

dfx
   Name        Score1   Score2  Score3        Score4
0  Jack            10  Perfect      10           BAD
1  Jill            10       10      10  Not Finished
2  Jane            20       10      10             5
3   Tom  Not Finished       15      10             5

确实导致原始数据集被修改。

任何解释为何列删除操作不会修改原始数据集,但是元素更改会更改原始数据集?并且似乎对分配的数据集中的列名进行的任何更改也会修改原始数据集。

1 个答案:

答案 0 :(得分:0)

您正在将dfx3dfx引用到一个DataFrame,如果要对dfx3进行与dfx相似的列的操作,则应创建一个dfxdfx3的副本未将它们都引用到同一DataFrame。

dfx3 = dfx.copy()