我有两个数据帧:一个具有12个列,另一个具有9个列,它们都有624行。我想将它们并排连接在一起,从而得到21 cols数据框,具有相同的624行数。我想保留行顺序。观察到两个数据框都按照“名称”列和“ L1”列的降序排列。我已经尝试过一些事情,通过axis = 1或不忽略索引来加入它们。我所拥有的只是一个数据框,其中行数加倍,并且有一堆NAN。我也尝试合并并追加,但是没有成功。任何帮助表示赞赏。
n Name Position ObsHET PredHET HWpval %Geno FamTrio MendErr MAF Alleles Rating
48 rs17818182 32945574 0.153 0.141 1.0000 98.9 29 0 0.076 G:T NaN
45 rs17818176 32944041 0.033 0.033 1.0000 100.0 30 0 0.017 G:T NaN
133 rs17818104 32879319 0.136 0.126 1.0000 98.9 29 0 0.068 T:C NaN
105 rs17818087 32863970 0.241 0.307 0.2037 96.7 29 1 0.190 T:C NaN
165 rs17818021 32794604 0.302 0.329 0.7637 85.6 20 0 0.208 A:C NaN
L1 L2 D LOD r2 CIlow CIhi Dist T-int
31331 rs17818182 rs640249 0.423 0.27 0.012 0.04 0.80 66596 -
31328 rs17818176 rs640249 1.000 0.21 0.014 0.05 0.97 65063 -
29083 rs17818104 rs640249 1.000 3.01 0.092 0.51 1.00 341 -
27571 rs17818087 rs640249 0.143 0.14 0.006 0.01 0.44 15008 -
14857 rs17818021 rs640249 0.311 0.68 0.033 0.06 0.57 84374 -
一种替代方法是在“名称”和“ L1”上合并:
In [36]: df
Out[36]:
a b c
0 k -0.787279 1.431643
1 m 1.278970 2.294351
2 n 0.793787 -2.337330
In [37]: df2
Out[37]:
x y z
2 k -2.419514 1.178166
3 m -0.827535 -0.113485
4 n 0.135814 -0.612922
In [38]: df.merge(df2, left_on='a', right_on='x')
Out[38]:
a b c x y z
0 k -0.787279 1.431643 k -2.419514 1.178166
1 m 1.278970 2.294351 m -0.827535 -0.113485
2 n 0.793787 -2.337330 n 0.135814 -0.612922
另一个是在调用合并之前先调用DataFrame.reset_index:
In [50]: df.reset_index().merge(df2.reset_index(), left_index=True, right_index=True)
Out[50]:
index_x a b c index_y x y z
0 0 k -0.787279 1.431643 2 k -2.419514 1.178166
1 1 m 1.278970 2.294351 3 m -0.827535 -0.113485
2 2 n 0.793787 -2.337330 4 n 0.135814 -0.612922