如何在Python中用单个变量合并Pandas的drop与droplevel处理雅虎财经数据
合并Pandas的drop与droplevel操作(雅虎财经数据处理)
问题
我想处理雅虎财经下载的数据,要删掉列层级和右侧指定列,现在用两个变量分步做:
FAANG = yf.download(['AAPL','GOOGL','NFLX','META','AMZN','SPY'], start = '2008-01-01',end = '2022-12-31') FAANG_AC = FAANG.drop(FAANG.columns[6:36],axis=1) FAC = FAANG_AC.droplevel(0,axis=1)
怎么把.drop()和.droplevel()合并到一个变量里,不用多个中间变量?
解决办法
直接用Pandas的链式调用把两个操作串起来,一步到位:
FAC = yf.download(['AAPL','GOOGL','NFLX','META','AMZN','SPY'], start='2008-01-01', end='2022-12-31')\ .iloc[:, :6]\ .droplevel(0, axis=1)
这里iloc[:, :6]对应你原来的drop(columns[6:36]),直接保留前6列,接着调用.droplevel(0, axis=1)去掉列的第一层索引,不需要任何中间变量就能得到最终的FAC数据框。
如果不想用索引筛选,也可以通过列的层级信息精准筛选后再去层级:
FAC = (yf.download(['AAPL','GOOGL','NFLX','META','AMZN','SPY'], start='2008-01-01', end='2022-12-31') .drop(columns=lambda col: col[1] != 'AAPL') .droplevel(0, axis=1))
核心就是把多个Pandas数据处理方法用.直接连接,省略中间变量的赋值步骤。
内容的提问来源于stack exchange,提问作者PokerMaster
相关产品推荐
相关产品推荐

