为什么df1=df不复制python中的数据帧?
我有两个完全相同的数据帧。[Python] df1=df#其中df中没有名为“SD”的列 但是,当我尝试执行以下操作时,为什么要将列“SD”添加到两个数据帧中为什么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 =
`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)