📜  数据框复制 - Python (1)

📅  最后修改于: 2023-12-03 15:26:08.542000             🧑  作者: Mango

数据框复制 - Python

在Python中,数据框(DataFrame)是一种很常用的数据类型,其结构类似于表格,包含了行、列以及每个单元格的值。有时候,我们需要对数据框进行拷贝以便于进行进一步的数据处理,那么在Python中应该如何完成数据框的复制呢?

1.浅拷贝

在Python中,我们可以使用copy()函数对数据框进行浅拷贝。所谓浅拷贝,即创建一个新的对象,但其内容仍然由原始数据框中的对象所构成,即新数据框和原始数据框共享一部分内存地址。

import pandas as pd

# 读取csv文件
df = pd.read_csv('data.csv')

# 拷贝数据框
df_copy = df.copy()

# 修改原始数据框的一个值
df.iloc[0,0] = 999

# 输出原始数据框和拷贝后的数据框
print(df.head())
print(df_copy.head())

输出结果如下所示:

         A         B         C         D
0  999.000  0.051491  0.680402  0.243551
1    0.117  0.177306  0.695417  0.743351
2    0.056  0.584443  0.069790  0.847196
3    0.046  0.153440  0.237633  0.414059
4    0.003  0.745355  0.248815  0.832528
         A         B         C         D
0    0.117  0.051491  0.680402  0.243551
1    0.117  0.177306  0.695417  0.743351
2    0.056  0.584443  0.069790  0.847196
3    0.046  0.153440  0.237633  0.414059
4    0.003  0.745355  0.248815  0.832528

可以看到,修改了原始数据框的一个值后,拷贝后的数据框也发生了改变,说明这两个数据框共享了一部分内存地址。

2.深拷贝

与浅拷贝不同,深拷贝会创建一个新的对象,并且将其内容也进行拷贝,即新数据框和原始数据框不共享内存地址。

在Python中,我们可以使用deepcopy()函数对数据框进行深拷贝。需要注意的是,由于深拷贝会将所有数据进行拷贝,因此可能会导致一些性能问题。

import pandas as pd
import copy

# 读取csv文件
df = pd.read_csv('data.csv')

# 拷贝数据框
df_copy = copy.deepcopy(df)

# 修改原始数据框的一个值
df.iloc[0,0] = 999

# 输出原始数据框和拷贝后的数据框
print(df.head())
print(df_copy.head())

输出结果如下所示:

         A         B         C         D
0  999.000  0.051491  0.680402  0.243551
1    0.117  0.177306  0.695417  0.743351
2    0.056  0.584443  0.069790  0.847196
3    0.046  0.153440  0.237633  0.414059
4    0.003  0.745355  0.248815  0.832528
         A         B         C         D
0    0.117  0.051491  0.680402  0.243551
1    0.117  0.177306  0.695417  0.743351
2    0.056  0.584443  0.069790  0.847196
3    0.046  0.153440  0.237633  0.414059
4    0.003  0.745355  0.248815  0.832528

可以看到,修改了原始数据框的一个值后,拷贝后的数据框并没有发生改变,说明这两个数据框并不共享内存地址。

总结

在Python中,我们可以使用copy()函数进行浅拷贝,使用deepcopy()函数进行深拷贝。需要根据实际的需求来选择不同的拷贝方式。