2016-10-05 16 views
3

同じ行インデックスと列名を持ち、セルの値が異なる2つのデータフレームを組み合わせることに興味があります。私はこのように見える結果のフレームをご希望の同じ行と列であるがセルの値が異なるパンダのデータフレームを結合する

import pandas as pd 
import numpy as np 

df1 = pd.DataFrame({'A':[22,2,np.NaN,np.NaN], 
        'B':[23,4,np.NaN,np.NaN], 
        'C':[24,6,np.NaN,np.NaN], 
        'D':[25,8,np.NaN,np.NaN]}) 

df2 = pd.DataFrame({'A':[np.NaN,np.NaN,56,100], 
        'B':[np.NaN,np.NaN,58,101], 
        'C':[np.NaN,np.NaN,59,102], 
        'D':[np.NaN,np.NaN,60,103]}) 

In[6]: print(df1) 
     A  B  C  D 
0 22.0 23.0 24.0 25.0 
1 2.0 4.0 6.0 8.0 
2 NaN NaN NaN NaN 
3 NaN NaN NaN NaN 

In[7]: print(df2) 
     A  B  C  D 
0 NaN NaN NaN NaN 
1 NaN NaN NaN NaN 
2 56.0 58.0 59.0 60.0 
3 100.0 101.0 102.0 103.0 

 A  B  C  D 
0 22.0 23.0 24.0 25.0 
1 2.0 4.0 6.0 8.0 
2 56.0 58.0 59.0 60.0 
3 100.0 101.0 102.0 103.0 

私はpd.concatとpd.mergeのさまざまな方法を試してみましたが、データの一部が常に取得する以下の例を参照してください。 NaNで置き換えられました。正しい方向のポインターがあれば幸いです。

答えて

2

使用combine_first

print (df1.combine_first(df2)) 
     A  B  C  D 
0 22.0 23.0 24.0 25.0 
1 2.0 4.0 6.0 8.0 
2 56.0 58.0 59.0 60.0 
3 100.0 101.0 102.0 103.0 

またはfillna

print (df1.fillna(df2)) 
     A  B  C  D 
0 22.0 23.0 24.0 25.0 
1 2.0 4.0 6.0 8.0 
2 56.0 58.0 59.0 60.0 
3 100.0 101.0 102.0 103.0 

またはupdate

df1.update(df2) 
print (df1) 
     A  B  C  D 
0 22.0 23.0 24.0 25.0 
1 2.0 4.0 6.0 8.0 
2 56.0 58.0 59.0 60.0 
3 100.0 101.0 102.0 103.0 
+0

多くのオプションから選択できます...ありがとうございます! –

+0

私の答えが役に立ったら[了解](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を忘れないでください。ありがとう。 – jezrael

関連する問題