python - 在 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 的两列相等。对此的解释会有所帮助。我可以使用列索引交换列。但不知道为什么这不起作用。
解决方案
原因是您不创建副本,而是创建参考。
尝试这个:
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]
。因为您创建了参考,或者说是该系列的“同义词”,而不是副本。
推荐阅读
- c++ - 在没有模型的情况下打印 ONNXRUNTIME::Graph
- amazon-web-services - 设计 DynamoDB 表来存储 cloudwatch 警报的最佳方式是什么
- c# - Blazor:未设置基类的 Razor 组件继承参数
- mongodb - 如何将查找文档中的字符串字段收集到 MongoDb 中根文档的数组字段中
- javascript - 如何从 Cypress 每个返回 Map 对象?
- jmeter - 无法在 Jmeter 5.2.1 中单击参数选项卡
- r - 如何执行多项式方程和曲线?
- javascript - 在本地工作时,iframe 无法在我的网站上工作
- java - SVG 文件无法转换为 Itext7 中的预期图像
- jquery - 向控制器发送 ajax 请求,它会在网络响应中返回脚本