Pandas2.2 DataFrame
Conversion
| 方法 | 描述 | 
|---|---|
| DataFrame.astype(dtype[, copy, errors]) | 用于将 DataFrame 中的数据转换为指定的数据类型 | 
| DataFrame.convert_dtypes([infer_objects, …]) | 用于将 DataFrame 中的数据类型转换为更合适的类型 | 
| DataFrame.infer_objects([copy]) | 用于尝试将 DataFrame 中的 object 类型的列转换为更具体的类型(如 int64、float64 或 boolean) | 
| 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 的影响不同。