合并两个不同长度的数据帧,但保留额外的列值

2024-09-21 01:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试合并两个不同长度的数据帧,除了第二个数据集额外的两列之外,其他35列都应该匹配,这提供了一个额外的和急需的值。所以在这个例子中,LR\u 06\u 18\u PPD要长得多,有35列,而LR\u 06\u 18\u COU\u D要短得多,有37列(前35列与另一个数据集同名)。第二个数据集中额外的两列(Change Indicator和Date)分别有一个标志(“D”)和一个日期。当我尝试使用以下方法合并它们时:

LR_06_18_COU_deleted = LR_06_18_PPD.merge(LR_06_18_COU_D,how='left')

我得到了一个数据集,第一个数据集的长度,这是我想要的,因为另一个数据集应该与另一个数据集匹配(第二个数据集应该与第一个数据集中的相应行匹配,但是另外还有Change Indicator和Date列),但是现在长度是37列,并且包含Change Indicator和Date,旗帜和日期本身已经完全消失了。匹配的行在Change Indicator列中都应该有“D”,但是没有,合并的数据集中没有“D”标志。是否有人知道如何做到这一点,但从第二个数据集中保留添加列中的值?你知道吗

编辑:

第一个数据帧的前五行(对于最后几列): 东主(4)|东主添加日期|附加东主 南15-11-1995年 南09-03-2017 N 南26-07-2006 N 南30-05-2007 N 南09-02-2017 N 南01-08-2007 N

第二个数据帧的前五行(对于最后几列): 其他所有人注明|变更指标|变更日期 2018年6月1日 2018年6月1日 2018年6月1日 2018年6月1日 2018年6月1日 2018年6月1日

期望输出: 所有者(4)|添加所有者的日期|附加所有者|更改指示器 南15-11-1995年 南09-03-2017 N D 南26-07-2006 N D 南30-05-2007 N D 南09-02-2017 N D 南01-08-2007 N D

(无法将日期列调整到右侧)。你知道吗

我甚至可能问错了问题。实际上,我要做的是删除第一个数据集(LR\u 06\u 18\u PPD)中的每一行,其中另一个数据集(LR\u 06\u 18\u COU PPD-LR\u 06\u 17\u COU D)满足多个条件(匹配“Title Number”和“Postcode”列,以及“Change Indicator”=“D”)。我不知道这是否可以不首先合并数据集就完成。我最初尝试了for和if循环,例如:

for rows in LR_06_18_PPD:
    if LR_06_18_PPD['Title Number'] == LR_06_18_COU_PPD['Title Number'] and 
    LR_06_18_COU_PPD['Change Indicator'] == "D":
        del rows

但这给了我: raise VALUERROR(消息)

ValueError:只能比较标记相同的序列对象

因此,在删除更改指示符列等于D的行之前,我尝试合并数据集。如果有人能说明最好的方法,那就太棒了。我还想在Change Indicator等于A的地方追加行


Tags: 数据方法numberfordateiftitle标志

热门问题