2016-11-02 8 views
0

私は結合したい多くのデータフレームを持っています。 私は1つの "level_0"列が必要です。これらのコマンドでは多くのデータフレームをPythonでどのように組み合わせることができますか?

pd.concat([df_NB_E, df_LDA_E, df_DT_E, df_RF_E], axis=1) 

enter image description here

+0

'level_0'列がすべて同じ場合は削除できます。名前ではなく、位置(by .iloc)で! – IanS

+0

それ以外の場合は、繰り返しマージします。 – IanS

答えて

0

私は名前を持つすべての列を削除することができました "level_0"

df.drop(df.columns[[0]], axis=1, inplace=True) 
df 
1

それはそうです、そのlevel_0は右、あなたのインデックスだろうか?

あなたが持っている:

>>> level0 = ['ALL','AWA','REM','S1','S2','SWS'] 
>>> df1 = pd.DataFrame(data={'level_0':level0, 'col1':np.random.randint(0,9,6)}) 
>>> df2 = pd.DataFrame(data={'level_0':level0, 'col2':np.random.randint(0,9,6)}) 
>>> df3 = pd.DataFrame(data={'level_0':level0, 'col3':np.random.randint(0,9,6)}) 

>>> df1 
    col1 level_0 
0  5  ALL 
1  8  AWA 
2  5  REM 
3  3  S1 
4  8  S2 
5  4  SWS 

>>> df2 
    col2 level_0 
0  4  ALL 
1  1  AWA 
2  3  REM 
3  2  S1 
4  5  S2 
5  1  SWS 

>>> df3 
    col3 level_0 
0  1  ALL 
1  3  AWA 
2  0  REM 
3  4  S1 
4  2  S2 
5  3  SWS 

>>> pd.concat([df1,df2,df3], axis=1) 

    col1 level_0 col2 level_0 col3 level_0 
0  5  ALL  4  ALL  1  ALL 
1  8  AWA  1  AWA  3  AWA 
2  5  REM  3  REM  0  REM 
3  3  S1  2  S1  4  S1 
4  8  S2  5  S2  2  S2 
5  4  SWS  1  SWS  3  SWS 

あなたは連結、その後、あなたのインデックスとしてlevel_0を設定することができます。

>>> pd.concat([df1.drop('level_0', axis=1), df2.drop('level_0', axis=1), df3.drop('level_0', axis=1)], axis=1) 

    col1 col2 col3 
0  5  4  1 
1  8  1  3 
2  5  3  0 
3  3  2  4 
4  8  5  2 
5  4  1  3 
を:それはインデックスではない場合、あなたが連結する前にそれを削除することができますの

>>> pd.concat([df1.set_index('level_0'), df2.set_index('level_0'), df3.set_index('level_0')], axis=1) 

     col1 col2 col3 
level_0     
ALL   5  4  1 
AWA   8  1  3 
REM   5  3  0 
S1   3  2  4 
S2   8  5  2 
SWS   4  1  3 

関連する問題