当前位置: 首页 > news >正文

【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 pd

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)

输出:

原始 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 的影响不同。

相关文章:

  • BLE 状态机设计思路
  • 清晰易懂的 Apollo 配置中心安装与使用教程
  • 巴特沃斯滤波器
  • 国内下载不了镜像,可以用国外机器下载完成,打成tar文件,在国内机器上重新加载
  • 操作数组的工具类
  • spring mvc 中 RestTemplate 全面详解及示例
  • 蓝桥杯真题——接龙序列
  • 利用python从零实现Byte Pair Encoding(BPE):NLP 中的“变形金刚”
  • Centos7下安装hive详细步骤
  • ffmpeg播放音视频流程
  • springboot工程配置Mybatis与简单使用
  • 大数据学习(105)-大数据组件分析
  • 手撕unique_ptr 和 shareed_ptr
  • 使用 Django 构建 Web 应用程序:症状检测 - 分步指南
  • 【项目管理】第7章 项目立项管理 --知识点整理
  • RocketMQ 02
  • netty启用websocket的压缩机制
  • 实现一个 Markdown 编辑器组件:Vue 3 + Vite + Highlight.js
  • java基础 关键字static
  • 导引头是个啥
  • 公司网站建设小江/alexa
  • 宜春做网站公司怎么样/网站设计与开发
  • 建设部网站13清单/怎样能在百度上搜索到自己的店铺
  • 哪个公司做网站好 知乎/百度搜索的优势
  • 株洲seo优化排名/seo网站优化
  • 网站设计和美工一样吗/优化网站排名方法教程