连接两个不相等的数据帧

2024-04-19 19:56:25 发布

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

我有两个长度不等的数据帧。第一个数据帧(df1)具有具有唯一值的列A,并且对应于同一数据帧中的列B和列C。 第二个数据帧(df2)具有名为column A的列,该列具有df1的A列的值的多次重复,并且与该列D和列E相对应。 我想把列A上的df1和df2连接起来,这样它们就形成了一个数据帧,而B列和C列的值与df1中的值相对应。在

Df1

  column A. Column B

A.                     ab
B.                      bc
C.                      fg

Df2
Column A   column D
A.                      1
B.                       2
C.                       3
B.                        4
A.                        5
A.                         6



Df1 + Df2

Column A column D column B
A.                  1.              ab
B.                  2.               bc
C.                   3.              fg
B.                   4.              bc
A.                   5.              ab 
A.                    6.              ab

怎么做?在


Tags: 数据abcolumndf1df2bcfg
2条回答

如果两个DataFrame中只有公共列通过左联接联接联接列Column A,则可以使用不带参数on^{}

print (DF1)
  Column A Column B  Column C
0       A.       ab         1
1       B.       bc         9
2       C.       fg         7

print (DF2)
  Column A  column D  column E
0       A.         1         8
1       B.         2         9
2       C.         3         7
3       B.         4         3
4       A.         5         1
5       A.         6         0

^{pr2}$

如果多个相同的列添加on

df = DF2.merge(DF1,how='left', on='Column A')
print (df)
  Column A  column D  column E Column B  Column C
0       A.         1         8       ab         1
1       B.         2         9       bc         9
2       C.         3         7       fg         7
3       B.         4         3       bc         9
4       A.         5         1       ab         1
5       A.         6         0       ab         1

假设'Column A'是唯一的公共列,merge默认使用所有公共列。在

DF2.merge(DF1, 'left')

  Column A  column D  column E Column B  Column C
0       A.         1         8       ab         1
1       B.         2         9       bc         9
2       C.         3         7       fg         7
3       B.         4         3       bc         9
4       A.         5         1       ab         1
5       A.         6         0       ab         1

join使用索引,因此我们将DF1和{}的索引设置为DF2。默认情况下,也需要我们设置DF2的索引,但是我们指定了on='Column A'参数,这样我们就可以在数据帧中保留{}。在

^{pr2}$

相关问题 更多 >