【Pandas】pandas DataFrame copy

Pandas2.2 DataFrame

Conversion

方法描述
DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型
DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型
DataFrame.infer_objects([copy])用于尝试将 DataFrame 中的 object 类型的列转换为更具体的类型(如 int64float64boolean
DataFrame.copy([deep])用于创建 DataFrame 的副本

pandas.DataFrame.copy

pandas.DataFrame.copy 是一个方法,用于创建 DataFrame 的副本。这个方法可以用于创建浅拷贝或深拷贝,具体取决于 deep 参数的设置。

方法签名
DataFrame.copy(deep=True)
参数说明
  • deep: 布尔值,默认为 True,表示是否进行深拷贝。如果设置为 True,则返回一个深拷贝;如果设置为 False,则返回一个浅拷贝。
返回值
  • 返回一个新的 DataFrame,该 DataFrame 是原 DataFrame 的副本。
示例

假设有一个 DataFrame 如下:

import pandas as pddata = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n数据类型:")
print(df.dtypes)

输出:

原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object
示例1:创建深拷贝
df_deep_copy = df.copy(deep=True)
print("深拷贝后的 DataFrame:")
print(df_deep_copy)
print("\n数据类型:")
print(df_deep_copy.dtypes)

结果:

深拷贝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object
示例2:创建浅拷贝
df_shallow_copy = df.copy(deep=False)
print("浅拷贝后的 DataFrame:")
print(df_shallow_copy)
print("\n数据类型:")
print(df_shallow_copy.dtypes)

结果:

浅拷贝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object
示例3:修改深拷贝对原 DataFrame 的影响
df_deep_copy['A'][0] = 100
print("修改深拷贝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)

结果:

修改深拷贝后的 DataFrame:A    B  C
0  100  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z
示例4:修改浅拷贝对原 DataFrame 的影响
df_shallow_copy['A'][0] = 200
print("修改浅拷贝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)

结果:

修改浅拷贝后的 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z

通过这些示例,可以看到 pandas.DataFrame.copy 方法如何创建 DataFrame 的副本,并且深拷贝和浅拷贝在修改时对原 DataFrame 的影响不同。

注意事项
  • copy 方法可以创建 DataFrame 的副本。
  • 设置 deep=True 返回一个深拷贝,这意味着副本和原 DataFrame 完全独立,修改副本不会影响原 DataFrame。
  • 设置 deep=False 返回一个浅拷贝,这意味着副本和原 DataFrame 共享数据,修改副本可能会影响原 DataFrame。
  • 深拷贝适用于需要完全独立副本的场景,而浅拷贝适用于不需要完全独立副本且希望节省内存的场景。
示例代码及验证

为了验证 pandas.DataFrame.copy 方法的效果,可以运行上述示例代码并查看输出结果。

import pandas as pd# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],'B': [1.1, 2.2, 3.3],'C': ['x', 'y', 'z']
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)
print("\n数据类型:")
print(df.dtypes)# 创建深拷贝
df_deep_copy = df.copy(deep=True)
print("\n深拷贝后的 DataFrame:")
print(df_deep_copy)
print("\n数据类型:")
print(df_deep_copy.dtypes)# 创建浅拷贝
df_shallow_copy = df.copy(deep=False)
print("\n浅拷贝后的 DataFrame:")
print(df_shallow_copy)
print("\n数据类型:")
print(df_shallow_copy.dtypes)# 修改深拷贝对原 DataFrame 的影响
df_deep_copy['A'][0] = 100
print("\n修改深拷贝后的 DataFrame:")
print(df_deep_copy)
print("\n原始 DataFrame:")
print(df)# 修改浅拷贝对原 DataFrame 的影响
df_shallow_copy['A'][0] = 200
print("\n修改浅拷贝后的 DataFrame:")
print(df_shallow_copy)
print("\n原始 DataFrame:")
print(df)
运行结果

运行上述代码后,你会看到以下输出:

原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object深拷贝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object浅拷贝后的 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z数据类型:
A      int64
B    float64
C     object
dtype: object修改深拷贝后的 DataFrame:A    B  C
0  100  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  1  1.1  x
1  2  2.2  y
2  3  3.3  z修改浅拷贝后的 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z原始 DataFrame:A    B  C
0  200  1.1  x
1    2  2.2  y
2    3  3.3  z

通过这些示例,可以看到 pandas.DataFrame.copy 方法如何创建 DataFrame 的副本,并且深拷贝和浅拷贝在修改时对原 DataFrame 的影响不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

缓存相关问题

Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制 Redis 为什么…

2025年AI开发学习路线

目录 一、基础阶段(2-3个月) 1. 数学与编程基础 2. 机器学习入门 二、核心技能(3-4个月) 1. 深度学习与框架 2. 大模型开发(重点) 三、进阶方向(3-6个月) 1. 多模态与智能体…

SvelteKit 最新中文文档教程(19)—— 最佳实践之身份认证

前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …

【Kafka基础】消费者命令行完全指南:从基础到高级消费

Kafka消费者是消息系统的关键组成部分,掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用对于调试、测试和监控都至关重要。本文将全面介绍该工具的各种用法,帮助您高效地从Kafka消费消息。 1 基础消费模式 1.1 从最…

CausalML 基于机器学习算法的因果推理方法

CausalML 是一个 Python 包,它使用基于最新研究的机器学习算法提供一套提升建模和因果推理方法。它提供了一个标准界面,允许用户从实验或观察数据中估计条件平均处理效应 (CATE),也称为个体治疗效应 (ITE&a…

解锁深度学习激活函数

在深度学习的广袤天地里,激活函数宛如隐匿于神经网络架构中的神奇密码,掌控着模型学习与表达的关键力量。今天,就让我们一同深入探究这些激活函数的奇妙世界,揭开它们神秘的面纱。 一、激活函数为何不可或缺? 想象一…

从零到有的游戏开发(visual studio 2022 + easyx.h)

引言 本文章适用于C语言初学者掌握基本的游戏开发, 我将用详细的步骤引领大家如何开发属于自己的游戏。 作者温馨提示:不要认为开发游戏很难,一些基本的游戏逻辑其实很简单, 关于游戏的开发环境也不用担心,我会详细…

大数据专业学习路线

大数据专业学习路线 目录 基础知识核心技术进阶技能实战项目职业发展学习资源学习计划常见问题 1. 基础知识 1.1 编程语言 Python:大数据分析的基础语言 基础语法和数据类型函数和模块面向对象编程文件操作和异常处理常用库:NumPy, Pandas, Matplot…

flink部署使用(flink-connector-jdbc)连接达梦数据库并写入读取数据

flink介绍 1)Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink 被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。 2)在实时计算或离线任务中,往往需要…

用swift playground写个ios应用和大模型或者网站交互

import SwiftUIstruct ContentView: View {State private var textFieldText: String ""State private var outputText: String "输出将会显示在这里"private let tip:String "消息已发送,请等待"State private var history:[Stri…

springboot+vue2集成JWT token实现权限验证

前端项目搭建参考: Vue项目的搭建和启动_vue项目启动 csdn-CSDN博客 Vue ElementUI 登录页面_vue用户登录页面-CSDN博客 跨域问题前端解决-CSDN博客 实现思路: 1. 实现的目的:为了保护网站安全信息,使用jwt进行权限验证&#xf…

Cursor编程-从入门到精通__0409

早期的Github Copilot 最近更新了,支持Agent编程,字节跳动Trae使用(免费),但成熟程度不如Cursor,Cursor前50次免费 Copilot VS Cursor*** 1,Cursor VSCode 二次开发,IDE级别 2&…

MyBatis 详解及代码示例

MyBatis 是一个 半自动 ORM 框架,主要用于 Java 与数据库之间的持久化操作,它本质是对 JDBC 的封装 全名:MyBatis(前身 iBATIS)核心作用:自动将 SQL 执行结果映射为 Java 对象;也可以将 Java 对…

1.6-抓包技术(Burp Suite\Yakit抓包\Web、APP、小程序)

1.6-抓包技术(Burp Suite\Yakit抓包\Web、APP、小程序) 如果要使用抓包软件,基本上第一步都是要安装证书的。原因如下: 客户端(浏览器或应用)会检测到证书不受信任,并弹出 证书错误&#xff0…

Java 大视界 -- 基于 Java 的大数据隐私保护在金融客户信息管理中的实践与挑战(178)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

第十届 蓝桥杯 嵌入式 省赛

一、分析 这届的真题,有点像第七届的液位检测。 这届的题目开始,貌似比赛描述的功能,逻辑上变得更好梳理了。一开始就把大致的功能给你说明一遍,不像之前都是一块一块的说明。 1. 基本功能 1)测量竞赛板上电位器 R…

实现usb的MTP功能

前言:最终结果根据用户自主选择可实现host和device功能的切换。 效果展示: 当插入usb时设备会弹窗 当用户选择设备模式时pc端就会出现mtp设备盘符 实现mtp设备 ubuntu架构根文件系统通过uMTP-Responder实现usb的MTP功能 添加服务 /home/flynn/firfly_rootfs/lib/system…

React-05React中props属性(传递数据),propTypes校验,类式与函数式组件props的使用

1.类式组件props基本数据读取与解构运算符传递 <script type"text/babel">// 创建组件class PersonalInfo extends React.Component {render() {// 读取props属性 并读取值console.log(props,this.props);return(<ul><li>姓名&#xff1a;{this.p…

PCI认证 密钥注入 ECC算法工具 NID_secp521r1 国密算法 openssl 全套证书生成,从证书提取公私钥数组 x,y等

步骤 1.全套证书已经生成。OK 2.找国芯要ECC加密解密签名验签代码。给的逻辑说明没有示例代码很难的上。 3.集成到工具 与SP联调。 1.用openssl全套证书生成及验证 注意&#xff1a;这里CA 签发 KLD 证书用的是SHA256。因为芯片只支持SHA256算法,不支持SHA512。改成统一。…

蓝桥杯每日刷题c++

目录 P9240 [蓝桥杯 2023 省 B] 冶炼金属 - 洛谷 (luogu.com.cn) P8748 [蓝桥杯 2021 省 B] 时间显示 - 洛谷 (luogu.com.cn) P10900 [蓝桥杯 2024 省 C] 数字诗意 - 洛谷 (luogu.com.cn) P10424 [蓝桥杯 2024 省 B] 好数 - 洛谷 (luogu.com.cn) P8754 [蓝桥杯 2021 省 AB2…