2017-07-19 3 views
1

からマルチインデックスを作成し、私は 2つのデータフレームdf_1df_2を持っている:連結方式の2つのデータフレームとインデックス

df_1 = pd.DataFrame({"A1":"1", "A2":"2", "A3":"3"}, index=[2411]) 
df_1.index.name = "i_1" 
df_2 = pd.DataFrame({"B1":"4", "B2":"5", "B3":"6"}, index=[123122]) 
df_2.index.name = "i_2" 

私ははそれらをCONCATしたいので、最終的なデータフレームは次のようになります。

   A1 A2 A3 B1 B2 B3 
i_1  i_2      
2411 123122 1 2 3 4 5 6 

基本的に、それは軸1に沿った連結であり、インデックスからマルチインデックスを設定しようとしています。

私が行っていることを希望する結果、最も最も近いです:

df_1 = df_1.reset_index() 
df_2 = df_2.reset_index() 
df_f = pd.concat([df_1,df_2], axis=1) 
df_f = pd.DataFrame(df_f, index=pd.MultiIndex.from_arrays([float(df_1["i_1"]), float(df_2["i_2"])], names=["i_1","i_2"])) 
del df_f["i_1"] 
del df_f["i_2"] 

しかし、結果は次のとおりです。

A1 A2 A3 B1 B2 B3 
i_1 i_2      
2411.0 123122.0 NaN NaN NaN NaN NaN NaN 

答えて

2

私は、最も単純には、デフォルトのインデックスの両方dfreset_indexだと思いますconcatデータを整理して最後にset_index

df_f = pd.concat([df_1.reset_index(),df_2.reset_index()], axis=1).set_index(['i_1','i_2']) 
print (df_f) 
      A1 A2 A3 B1 B2 B3 
i_1 i_2      
2411 123122 1 2 3 4 5 6 
後に2行を取得して、データがallign(同じではないインデックス)することはできませんのでごソリューションで

は、問題別の指標である:

df_f = pd.concat([df_1,df_2], axis=1) 
print (df_f) 
     A1 A2 A3 B1 B2 B3 
2411  1 2 3 NaN NaN NaN 
123122 NaN NaN NaN 4 5 6 

を作成次にDataFrameコンストラクタでNaNのために取得Multiindex新しいが、データが再びaligneありません - オリジナルdf_fのデータサイズは(2x6)で、1,6構造に割り当てる必要があります。インデックスも異なります。

+0

ありがとうございます!なぜ、私のソリューションはNaNで構成されているのですか? –

+0

私はそれを説明しようと、編集された答えを確認してください。 – jezrael

関連する問題