我正在尝试合并两个不同长度的数据帧,这些数据帧应该匹配所有35列,除了第二个数据集所具有的额外两列,这提供了额外的和非常需要的值。因此,在此示例中,LR_06_18_PPD更长并且具有35列,其中LR_06_18_COU_D更短并且具有37列(前35个与其他数据集的名称相同)。第二个数据集中的额外两列(更改指示符和日期)分别具有标记(" D")和日期。当我尝试使用以下方法合并它们时:
LR_06_18_COU_deleted = LR_06_18_PPD.merge(LR_06_18_COU_D,how='left')
我得到第一个数据集的长度的数据集,这是我想要的,因为其他数据集应该与另一个匹配(第二个数据集应匹配第一个数据集中的相应行,但另外还有变更指标和日期但是,虽然长度现在是37列,并且包含更改指示符和日期,但标志和日期本身已完全消失。匹配的行应该都有" D"在更改指标列中,但它们没有,没有" D"合并数据集中的标志。有谁知道如何做到这一点但保留第二个数据集中添加的列中的值?
编辑:
第一个数据帧的前五行(最后几列): 所有者(4)|添加日期所有者|其他所有者 南15-11-1995 Y. 南09-03-2017 N. 南26-07-2006 N. 南30-05-2007 N. 南09-02-2017 N. nan 01-08-2007 N
前五行第二个数据帧(最后几列): 其他所有者表示|变更指标|改变日期 N D 01-06-2018 N D 01-06-2018 N D 01-06-2018 N D 01-06-2018 N D 01-06-2018 N D 01-06-2018
期望的输出: 所有者(4)|添加日期所有者|其他所有者|变更指标 南15-11-1995 Y D 南09-03-2017 N D. 南26-07-2006 N D 南30-05-2007 N D. 南09-02-2017 N D. nan 01-08-2007 N D
(不能将日期列放在右侧)。
我甚至可能会问错误的问题。我实际上要做的是删除第一个数据集(LR_06_18_PPD)中的每一行,其中另一个数据集(LR_06_18_COU_PPD - LR_06_17_COU_D是其中的一部分,其中变更指标==" D")满足多个条件(匹配'标题编号'和'邮政编码'列,'更改指标' ==" D"。我不会'知道这是否可以在没有首先合并数据集的情况下完成。我最初尝试过和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
但是这给了我: 提出ValueError(msg)
ValueError:只能比较带有相同标签的Series对象
所以我试图在删除变更指标列等于D的行之前合并数据集。如果有人能够阐明最好的方法,那就太棒了。我还想在变量指标等于A的位置附加行。