你好,我需要合并两个数据框
第一个具有两列
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
中的每个元素检入Names
,如果该元素具有(+)
或(-)
,然后检查其对应的{ {1}},然后继续Group
,并在列df2
上添加相应的Group
。
例如,在Group
df1
中有一个line 2
,其Seq1(+)
是Group
,然后我在{{1}中查找该行},其中{{1}中存在G1
,我将df2
添加到“组”列中。
所以最后我应该得到类似的东西:
Seq1(+)
如您所见,上次合并的df中不存在COL1
,因为G1
的{{1}}中不存在
有人对使用python和pandas有想法吗?
答案 0 :(得分:0)
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