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
Post a Comment