根据条件合并Pandas中的两个数据帧

2024-10-01 19:19:49 发布

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

你好,我需要合并两个数据帧

第一个有两列

df1

Groups Names
G1    SeqA
G1    Seq1(+)
G1    SeqC
G1    Seq2(-)
G1    Seq3(+)
G1    SeqB
G1    SeqG
G2    Seq8(-)
G2    SeqY
G2    SeqH
G3    Seq10(+)
G3    SeqK
G3    Seq12(-) 

和另一个,如df2:

COL1    COL2  COL3
Seq1(+) SeqA  89
Seq2(-) SeqA  67
Seq3(+) SeqB  89
Seq2(-) SeqC  98
Seq8(-) SeqY  45
Seq8(-) SeqH  90
Seq10(+) SeqK 76
Seq11(-) SeqL 78
Seq12(-) SeqK 89

其思想是合并两个数据帧,以便将Groups信息添加到df2

想法是首先为{}中的每个元素签入{},如果这个元素有一个{}或一个{},然后检查它对应的{},然后继续{}并在{}列添加相应的{}

这里举例来说,在df1{}中有Seq1(+),它的GroupG1,然后我在df2中查找Seq1(+)出现在COL1中的行,并将G1添加到列组中

因此,最后我应该得到如下结果:

Group COL1 COL2 COL3
G1 Seq1(+) SeqA 89
G1 Seq2(-) SeqA 67
G1 Seq3(+) SeqB 89
G1 Seq2(-) SeqC 98
G2 Seq8(-) SeqY 45
G2 Seq8(-) SeqH 90 
G3 Seq10(+) SeqK 76
G3 Seq12(-) SeqK 89

如您所见Seq11(-)不存在于上次合并的df中,因为它不存在于G3df1

有人有使用python和pandas的想法吗


Tags: df1g1g2seq2seq1g3seqaseqb
1条回答
网友
1楼 · 发布于 2024-10-01 19:19:49
df3 = df1.merge(df2, how='inner', left_on='Names', right_on='COL1').drop('Names', axis=1)


Groups  COL1    COL2    COL3
0   G1  Seq1(+) SeqA    89
1   G1  Seq2(-) SeqA    67
2   G1  Seq2(-) SeqC    98
3   G1  Seq3(+) SeqB    89
4   G2  Seq8(-) SeqY    45
5   G2  Seq8(-) SeqH    90
6   G3  Seq10(+)    SeqK    76
7   G3  Seq12(-)    SeqK    89

相关问题 更多 >

    热门问题