pyPandas:搞乱join / append / concat两个数据帧

时间:2012-10-04 19:18:13

标签: python join dataframe pandas concat

我有两个数据帧:一个有12个cols,另一个有9个,两个都有624行。我想并排加入它们,得到21个cols数据帧,行数相同,为624行。我想按原样保留行顺序。观察两个数据帧按“Name”列和“L1”列的降序排列。我已经尝试了几个通过axis = 1忽略索引加入它们的东西。我所拥有的只是一个行数加倍的数据帧和一堆NAN。我也尝试过concat并追加,但没有成功。 任何帮助表示赞赏。 最好的,

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     -

1 个答案:

答案 0 :(得分: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

另一种方法是在调用merge之前先调用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