2012-10-04 53 views
0

我有兩個dataframes:一個12周的cols和其他與9,兩者有624行。我想通過導致21週數據框的cols用相同的624行數的一側加入他們一邊。我想保留行順序。觀察這兩個dataframes按降序列「名稱」和列「L1」的順序排列。我嘗試了幾種不同的方式來加入axis = 1來忽略索引。所有這一切我已經是翻了一番行的數據幀和一堆的NaN。我也嘗試concat和追加,但沒有成功。 任何幫助表示讚賞。 最佳,pyPandas:惹加入/附加/ CONCAT 2個dataframes

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  - 

回答

0

一種替代方法是在 '名稱' 和 '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 
+0

感謝您的幫助。我已經意識到復位會的工作,但是,爲什麼要重新索引Concat的DFS忽略它們? – fred

+0

可能會稍微有一些混亂的命名,但'ignore_index'忽略串列軸線,而不是'df.index'。 –

+0

我不這麼認爲。至少在'concat'中,你必須聲明軸。 – fred