2016-10-20 5 views
0

私はマルチインデックスのカラムを持つDataFrameを持っています。パンダのDataFrameマルチインデックスの再インデックスカラムが機能しない

ipdb> actions 
flow     inflow outflow     
action    Investment Trade ExternalFee Fee 
date  sequence          
2016-10-18 50   15000.0  NaN   NaN NaN 
      55    NaN  NaN  -513.0 NaN 
      60    NaN -14402.4   NaN NaN 
      70    NaN  NaN   NaN -14.29 

これで、「収益」列を追加し直したいと思います。

ipdb> actions.reindex(columns=['Investment', 'Trade', 'ExternalFee', 'Fee', 'Income'], level=1) 
flow     inflow outflow     
action    Investment Trade ExternalFee Fee 
date  sequence          
2016-10-18 50   15000.0  NaN   NaN NaN 
      55    NaN  NaN  -513.0 NaN 
      60    NaN -14402.4   NaN NaN 
      70    NaN  NaN   NaN -14.29 

「所得」列が追加されていません。

私はまた、レベルを命名しようとした:

ipdb> actions.reindex(columns=['Investment', 'Trade', 'Income'], level='action') 
flow     inflow outflow 
action    Investment Trade 
date  sequence      
2016-10-18 50   15000.0  NaN 
      55    NaN  NaN 
      60    NaN -14402.4 
+0

回答は受け入れられないほどですか? – desertnaut

答えて

2

あなたはすべての列によってreindexを必要とする - ので、値と最後のREINDEXを追加し、タプルへMultiIndexをエクスポートする必要があります。

tuples = actions.columns.tolist() 
tuples = tuples + [('outflow','Income')] 
print (tuples) 
[('inflow', 'Investment'), ('outflow', 'Trade'), 
('outflow', 'ExternalFee'), ('outflow', 'Fee'), 
('outflow', 'Income')] 

a = actions.reindex(columns=pd.MultiIndex.from_tuples(tuples)) 
print (a) 
        inflow outflow       
       Investment Trade ExternalFee Fee Income 
2016-10-18 50 15000.0  NaN   NaN NaN NaN 
      55  NaN  NaN  -513.0 NaN NaN 
      60  NaN -14402.4   NaN NaN NaN 
      70  NaN  NaN   NaN -14.29 NaN 

別かのうソリューションは:

actions[('outflow','Income')] = np.nan 
print (actions) 
action   inflow outflow       
date   Investment Trade ExternalFee Fee Income 
2016-10-18 50 15000.0  NaN   NaN NaN NaN 
      55  NaN  NaN  -513.0 NaN NaN 
      60  NaN -14402.4   NaN NaN NaN 
      70  NaN  NaN   NaN -14.29 NaN 
関連する問題