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
我想知道为什么这种列交换不起作用。它使df_old的两列相等。对此进行解释会很有帮助。不过,我可以使用列索引来交换列。但不知道为什么这不起作用。
备选方案I-根据文件
df.loc[:, ['b', 'a']] = df[['a', 'b']].to_numpy()
备选方案II
原因是您不创建副本,而是创建引用。
试试这个:
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 = df_old[a]
意味着您可以执行x = x + 1
,结果也将在df_old[a]
中。因为你创建了一个引用,或者说一个";同义词";该系列的,而不是副本。