欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Pandas】pandas DataFrame copy

【Pandas】pandas DataFrame copy

2025/7/7 17:51:33 来源:https://blog.csdn.net/weixin_39648905/article/details/147048616  浏览:    关键词:【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 的影响不同。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词