Python 在';行不通
我想知道为什么这个列交换不起作用。它使df_old的两列相等。对此的解释会有所帮助。不过,我可以使用列索引交换列。但我不知道为什么这不起作用。原因是你不创建副本,而是创建引用 试试这个:Python 在';行不通,python,pandas,Python,Pandas,我想知道为什么这个列交换不起作用。它使df_old的两列相等。对此的解释会有所帮助。不过,我可以使用列索引交换列。但我不知道为什么这不起作用。原因是你不创建副本,而是创建引用 试试这个: def columnchange (df_old, a=None, b=None): x=df_old[a] df_old[a]=df_old[b] df_old[b]=x return df
def columnchange (df_old, a=None, b=None):
x=df_old[a]
df_old[a]=df_old[b]
df_old[b]=x
return df_old
进一步解释:
def columnchange (df_old, a=None, b=None):
x=df_old[a].copy()
df_old[a]=df_old[b].copy()
df_old[b]=x
return df_old
意味着您可以执行
x=x+1
,结果也将出现在df_old[a]
中。因为您创建了一个引用,或者说是一个系列的“同义词”,而不是一个副本。为什么您不交换列名称呢?我只是先尝试了这种方法,在交换两个整数值的情况下效果很好。但我想知道这不起作用的原因。谢谢你的解释。现在可以了。
x = df_old[a]