首页 > 解决方案 > 在 Pandas 中的数据框中交换列不起作用

问题描述

        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 的两列相等。对此的解释会有所帮助。我可以使用列索引交换列。但不知道为什么这不起作用。

标签: pythonpandas

解决方案


原因是您不创建副本,而是创建参考。

尝试这个:

    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]。因为您创建了参考,或者说是该系列的“同义词”,而不是副本。


推荐阅读