Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将两个数据帧与其中一个数据帧中的多个数据帧合并_Python_Pandas_Merge - Fatal编程技术网

Python 将两个数据帧与其中一个数据帧中的多个数据帧合并

Python 将两个数据帧与其中一个数据帧中的多个数据帧合并,python,pandas,merge,Python,Pandas,Merge,我正在将两个数据帧合并到公共标题“COUNTERPARTYNAME”下。下面是我的df5示例: CONTRACT COUNTERPARTYNAME TERM 0 450 A 300 1 400 A 350 2 270

我正在将两个数据帧合并到公共标题“COUNTERPARTYNAME”下。下面是我的df5示例:

    CONTRACT                COUNTERPARTYNAME           TERM
0     450                          A                      300

1     400                          A                      350

2     270                          B                      600

3     360                          C                      300
...
和df6:

    COUNTERPARTYNAME          CBA               DAN
0           A                     500               10

1           B                     300               3

2           C                     400               9

3           D                     650               10

...
但实际上,两个数据帧都共享对方名称,但在df5中存在某些cpty的倍数。我正在尝试将两者合并,这样它们将合并到一个新的df中,对于每个cpty,CBA和DAN将显示在它旁边,包括倍数

我的预期结果如下:

 CONTRACT               COUNTERPARTYNAME           TERM        CBA     DAN
0     450                          A               300         500     10

1     400                          A               350         500     10

2     270                          B               600         300     3

3     360                          C               300         400     9
...
我知道如何将它合并为一对一,就像只有一个A、B、C等等。。。在df5中,就像在df6中一样

但是,当我尝试时:

df7=pd.merge(df5, df6), 

希望他们能在对方的名字上合并,然后打印出来,我在某些cpty上的很多数据就消失了,而其他cpty的弹出比他们在df5中实际显示的要多。例如,我在df5中有2个A和2个B,但当我合并时,出于某种原因,我现在有0个A和6个B。CBA和DAN是正确的,而且是相应的,但我觉得我因为某种原因丢失了一些数据。有没有办法纠正这个问题?我是否执行了错误的合并类型?

您需要明确说明要在哪一列上执行合并。此外,您还必须按以下方式使用

df7 = df5.merge(df6, on=['COUNTERPARTYNAME'])
输出:

  CONTRACT COUNTERPARTYNAME TERM  CBA DAN
0      450                A  300  500  10
1      400                A  350  500  10
2      270                B  600  300   3
3      360                C  300  400   9

你能展示预期的结果吗?是的,请看编辑的,我期望的,或希望的结果,现在已经包括在内了,伙计,停下来,至少试着做好你的工作。说真的,看看你的帮助历史,throway172。每次你遇到一个特定的查询问题,你都会来这里发布一个关于它的问题。我在你的历史记录中看到过几篇关于同一个精确查询的帖子——每一篇都是关于你需要进行的增量更改/修复的——是的,出于某种原因,这仍然给了我相同的输出。嗯,我不知道为什么。那是什么输出@我得到了所有相关的专栏,所以合并是可行的,但我所有的A交易对手都消失了,还有一些其他的。基本上看起来合并成功了,但我从df5获得的一些数据在事务中丢失了。在两个df的“我正在合并”中,在“对方名称”下会弹出“A”,但在实际合并中,“A”会出现,这很奇怪。您确定
COUNTERPARTYNAME
中没有尾随空格或前导空格吗?在合并之前,请尝试
df5.COUNTERPARTYNAME=df5.COUNTERPARTYNAME.apply(lambda x:x.strip())
。也可能是df6的条带吗?我对这两个条带都做了条带,得到了错误“float对象没有属性”“条带”