在熊猫中交换数据框中的列不起作用


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]中。因为你创建了一个引用,或者说一个";同义词";该系列的,而不是副本。

最新更新