首页 > 解决方案 > 如何复制熊猫数据框,使其成为 2 个变量?

问题描述

如何将一个 pandas 数据帧转换为 2 个,以便我可以在两个新创建的帧上独立操作?看起来当我使用“=”将它分配给一个新变量时,它正在做某种“通过引用进行评估”,而不是实际上复制数据帧。

这就是我所做的。我首先将 CSV 文件加载到 df_data

df_data = pd.read_csv(input_filename, usecols=colList, skiprows=2)

奇迹般有效。但是这个集合包含混合行(ML 项目的训练和测试数据),所以我想拆分这些集合。简而言之:复制数据集,然后在新创建的df_train_data删除所有带有“test”标志的行,反之亦然:

df_train_data = df_data
df_train_data.drop(df_train_data[df_train_data['Usage']=='test'].index, inplace=True)
del df_train_data['Usage']
df_test_data = df_data
df_test_data.drop(df_test_data[df_test_data['Usage']=='train'].index, inplace=True)
del df_test_data['Usage']

现在这会产生一个错误。在我删除 中的“使用”列(上面的第 3 行)后df_train_data,它也会从中消失df_data,因此在第 6 行中产生错误,因为它在 中不存在df_test_data

我还看到我认为我只会删除的行df_train_data已经完全消失了......

为什么?如何硬拷贝df_data到 2 个数据帧中,然后独立处理这两个数据帧?

标签: pandasdataframe

解决方案


您正在寻找复制功能:

df_train_data = df_data.copy()

推荐阅读