我正在尝试在熊猫中进行两次联接。我在一个df(ListDf
中有两列图像文件名。一列用于旧图像,另一列用于更新图像。我掌握了数据库中所有图像的清单,其中包括图像的路径(ImageDf
)。我想进行ListDf
和ImageDf
的左联接,将更新后的图像的路径移动到ListDf
中,然后重复左联接,这一次将旧图像的路径移动进入ListDf
。为此,我制作了ImageDf
的两个副本。
OldImgList = ImageDf
NewImgList = ImageDf
然后,我尝试重命名OldImgList
和NewImgList
的列,以便在进行联接时它们在ListDf
中具有正确的列名
OldImgList.columns = ['OldDateMod', 'OldFileName', 'OldPath']
NewImgList.columns = ['NewDateMod', 'NewFileName', 'NewPath']
但是,当我运行第一行代码时,OldImgList
和NewImgList
的列名称都设置为第一行中的名称。然后,当我运行第二行时,OldImgList
的列名称为NewImgList
。这是怎么回事?
答案 0 :(得分:1)
您要做的是创建对同一数据框的两个引用。
如果要创建一个数据框的两个副本,则可以使用df.copy()
方法(link to docs):
OldImgList = ImageDf.copy(deep=True)
NewImgList = ImageDf.copy(deep=True)
我没有遵循您的连接顺序,但是可能有一种方法可以在不制作2个数据帧副本的情况下使用(这将使用更多的内存)。例如,您可以向lsuffix
提供rsuffix
或df.join()
参数,以在联接的左侧或右侧数据帧中添加字符串后缀,以使匹配的列彼此区分({{ 3}})。