我一直在玩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
确实导致原始数据集被修改。
任何解释为何列删除操作不会修改原始数据集,但是元素更改会更改原始数据集?并且似乎对分配的数据集中的列名进行的任何更改也会修改原始数据集。
答案 0 :(得分:0)
您正在将dfx3
和dfx
引用到一个DataFrame,如果要对dfx3
进行与dfx
相似的列的操作,则应创建一个dfx
上dfx3
的副本未将它们都引用到同一DataFrame。
dfx3 = dfx.copy()