重命名一个数据框的列将重命名第二个df

时间:2020-07-01 15:51:59

标签: python pandas

我正在尝试在熊猫中进行两次联接。我在一个df(ListDf中有两列图像文件名。一列用于旧图像,另一列用于更新图像。我掌握了数据库中所有图像的清单,其中包括图像的路径(ImageDf)。我想进行ListDfImageDf的左联接,将更新后的图像的路径移动到ListDf中,然后重复左联接,这一次将旧图像的路径移动进入ListDf。为此,我制作了ImageDf的两个副本。

OldImgList = ImageDf
NewImgList = ImageDf

然后,我尝试重命名OldImgListNewImgList的列,以便在进行联接时它们在ListDf中具有正确的列名

OldImgList.columns = ['OldDateMod', 'OldFileName', 'OldPath']
NewImgList.columns = ['NewDateMod', 'NewFileName', 'NewPath']

但是,当我运行第一行代码时,OldImgListNewImgList的列名称都设置为第一行中的名称。然后,当我运行第二行时,OldImgList的列名称为NewImgList。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

您要做的是创建对同一数据框的两个引用。

如果要创建一个数据框的两个副本,则可以使用df.copy()方法(link to docs):

OldImgList = ImageDf.copy(deep=True)
NewImgList = ImageDf.copy(deep=True)

我没有遵循您的连接顺序,但是可能有一种方法可以在不制作2个数据帧副本的情况下使用(这将使用更多的内存)。例如,您可以向lsuffix提供rsuffixdf.join()参数,以在联接的左侧或右侧数据帧中添加字符串后缀,以使匹配的列彼此区分({{ 3}})。