2017-01-23 3 views
1

dfのいずれかの値がインデックスでnullの場合、nullを保持するように2つのデータフレームを結合します。値。たとえば、列yyyのインデックス0のdf_combineの下のコードでは、np.nanを保持する必要があります。pandasは2つのdfsを結合します。いずれかのdfがそのインデックスにnull値を持つ場合は何も残しません。

df1= pd.DataFrame.from_dict({'xxx':['ind',np.nan,'ind'],'yyy':[np.nan,'pin','din']}, orient='columns') 
    >>df1 
     xxx yyy 
    0 ind NaN 
    1 NaN pin 
    2 ind din 

df2= pd.DataFrame.from_dict({'xxx':['0.12','0.15','0.18','8.1'],'yyy':['9.2','1.1',np.nan,'7.1']}, orient='columns') 
    >>df2 
     xxx yyy 
    0 0.12 9.2 
    1 0.15 1.1 
    2 0.18 NaN 
    3 8.1 7.1 

所望の出力:

>>df_combine 
      xxx  yyy 
    0 ind||0.12 np.nan 
    1  np.nan  pin||1.1 
    2 ind||0.18  din 
+0

私の編集内容をご覧ください。私は希望の出力を追加しました。 – Rtut

答えて

3

IIUCあなたがこれを行うことができます。

In [92]: df1.add('||').add(df2.values) 
Out[92]: 
     xxx  yyy 
0 ind||0.12  NaN 
1  NaN pin||1.1 
2 ind||0.18  NaN 

セットアップ:

In [86]: df1= pd.DataFrame.from_dict({'xxx':['ind',np.nan,'ind'],'yyy':[np.nan,'pin','din']}, orient='columns') 

In [87]: df2= pd.DataFrame.from_dict({'xxx':['0.12','0.15','0.18'],'yyy':['9.2','1.1',np.nan]}, orient='columns') 

In [88]: df1 
Out[88]: 
    xxx yyy 
0 ind NaN 
1 NaN pin 
2 ind din 

In [89]: df2 
Out[89]: 
    xxx yyy 
0 0.12 9.2 
1 0.15 1.1 
2 0.18 NaN 

UPDATE:

In [126]: df1.add('||').add(df2.iloc[:len(df1)].values) 
Out[126]: 
     xxx  yyy 
0 ind||0.12  NaN 
1  NaN pin||1.1 
2 ind||0.18  NaN 
+0

素敵な解決策。私は追加について知らなかった。実際のデータの場合とは異なる次元の2つのdfsで作業していただけであれば、この回答を受け入れることができました。 df2にもう1つの行を追加すると、うまくいきません。私は私の元の質問を編集しました。 – Rtut

+0

@Rtut、あなたの希望するデータセットはどうですか?それはまだ同じですか? – MaxU

+0

@Rtut、私は自分の答えを更新しました - もし誰かに役立つなら、 – MaxU

関連する問題