2015-12-12 126 views
1

我試圖合併兩隻大熊貓於指數dataframes在一起,但我得到的錯誤...錯誤而合併兩個大熊貓dataframes一起

下面是DF1

 alleles chrom pos strand assembly# center protLSID assayLSID 
rs# 
TP121  C/A  0 121  +  NaN  NaN  NaN  NaN 
TP135  G/A  0 135  +  NaN  NaN  NaN  NaN 
TP283  A/G  0 283  +  NaN  NaN  NaN  NaN 
TP302  C/T  0 302  +  NaN  NaN  NaN  NaN 
TP334  T/G  0 334  +  NaN  NaN  NaN  NaN 

這裏的指數是DF2

 1KS 2861 2862 2A 2KS 3KS 4KS 5B 5C A1 ... WWA17replicate WWA18 WWA21 
rs#           ... 
TP121 N N N N N N N N N N ...    N  N  N 
TP135 N N G N N N N N N N ...    N  N  N 
TP283 A N N N A A N R N A ...    N  N  N 
TP302 C C N Y C N C Y Y T ...    Y  N  N 
TP334 G N N N N N N N N N ...    N  N  N 

當我嘗試合併時,我得到這個錯誤 - "['TP121' 'TP135' 'TP283' ..., 'TP251072' 'TP251178' 'TP251355'] not in index"當他們明確在兩個索引。我在哪裏做錯了?

pd.merge(df1, df2, on=df.index, how = "outer") 

回答

1

你可以嘗試比較:

pd.concat([df1, df2], axis=1) 
+0

那麼這工作非常出色。想知道爲什麼合併不起作用。 – upendra

0

對於你的任務pd.concat更好然後合併。但隨着merge你可以在rs#reset_index合併兩個數據框:

pd.merge(df1.reset_index(), df2.reset_index(), on='rs#') 

如果你需要得到數據幀有可以使用,然後​​原始指數:

pd.merge(df1.reset_index(), df2.reset_index(), on='rs#').set_index('rs#') 

In [50]: df1 
Out[50]: 
     alleles chrom pos strand assembly# center protLSID assayLSID 
rs#                  
TP121  C/A  0 121  +  NaN  NaN  NaN  NaN 
TP135  G/A  0 135  +  NaN  NaN  NaN  NaN 
TP283  A/G  0 283  +  NaN  NaN  NaN  NaN 
TP302  C/T  0 302  +  NaN  NaN  NaN  NaN 
TP334  T/G  0 334  +  NaN  NaN  NaN  NaN 

In [51]: df2 
Out[51]: 
     1KS 2861 2862 2A 2KS 3KS 4KS 5B 5C A1 WWA17replicate WWA18 WWA21 
rs#                 
TP121 N N N N N N N N N N    N  N  N 
TP135 N N G N N N N N N N    N  N  N 
TP283 A N N N A A N R N A    N  N  N 
TP302 C C N Y C N C Y Y T    Y  N  N 
TP334 G N N N N N N N N N    N  N  N 

In [52]: pd.merge(df1.reset_index(), df2.reset_index(), on='rs#').set_index('rs#') 
Out[52]: 
     alleles chrom pos strand assembly# center protLSID assayLSID 1KS \ 
rs#                    
TP121  C/A  0 121  +  NaN  NaN  NaN  NaN N 
TP135  G/A  0 135  +  NaN  NaN  NaN  NaN N 
TP283  A/G  0 283  +  NaN  NaN  NaN  NaN A 
TP302  C/T  0 302  +  NaN  NaN  NaN  NaN C 
TP334  T/G  0 334  +  NaN  NaN  NaN  NaN G 

     2861 ... 2A 2KS 3KS 4KS 5B 5C A1 WWA17replicate WWA18 WWA21 
rs#   ...              
TP121 N ... N N N N N N N    N  N  N 
TP135 N ... N N N N N N N    N  N  N 
TP283 N ... N A A N R N A    N  N  N 
TP302 C ... Y C N C Y Y T    Y  N  N 
TP334 N ... N N N N N N N    N  N  N 

[5 rows x 21 columns]