python - pandas dataframe.drop(col,axis=1) does not drop column from column.levels in multiindex dataframe -


i have multiindex dataframe dropping columns using df.drop(col,axis=1). then, looking through column.levels[0] , doing operations on columns. however, when try this, pandas looks removed column since not removed column.levels. bug? there war?

here df working with:

                ^gspc         pf             adj close  adj close date                             2013-04-22    1562.50    4023.45 2013-04-23    1578.78    4099.20 2013-04-24    1578.79    4094.70 2013-04-25    1585.16    4124.25 2013-04-26    1582.24    4211.65 2013-04-29    1593.61    4340.75 2013-04-30    1597.57    4467.55 2013-05-01    1582.70    4432.25 2013-05-02    1597.59    4494.95 2013-05-03    1614.42    4539.55 2013-05-06    1617.50    4645.95 2013-05-07    1625.96    4624.65 2013-05-08    1632.69    4677.40 2013-05-09    1626.67    4637.25 2013-05-10    1633.70    4602.40 2013-05-13    1633.77    4618.60 2013-05-14    1650.34    4510.85 2013-05-15    1658.78    4362.00 2013-05-16    1650.47    4418.95 2013-05-17    1667.47    4406.95 2013-05-20    1666.29    4503.50 2013-05-21    1669.16    4471.20 

here how dropping columns:

data = data.drop(stock.ticker,axis=1,level=0) 

here issue is:

>>> print data.columns multiindex [(^gspc, adj close), (pf, adj close)] >>> print data.columns.labels [array([2, 3]), array([0, 0])] >>> print data.columns.levels [index([nvda, aapl, ^gspc, pf], dtype=object), index([adj close], dtype=object)] 

adding method used generate df requested in comment: tickers list of stock ticker strings. stock object has ticker property among others. portfolio object collection of stocks.

data = getdata.get_history(tickers,dt.today()-relativedelta(months=months)) data = data.drop(['open','high','low','close','volume'],axis=1) data = data.unstack(0).swaplevel(0,1,axis=1).sortlevel(0,axis=1) data['pf','adj close'] = np.zeros(len(data)) stock in portfolio.getstocksinportfolio():   data['pf','adj close'] += data[stock.ticker,'adj close'] * stock.getsharesowned()   data = data.drop(stock.ticker,axis=1,level=0) 


Comments

Popular posts from this blog

python - How to create a legend for 3D bar in matplotlib? -

java - Multi-Label Document Classification -

php - Dynamic url re-writing using htaccess -