Skip to main content
 首页 » 编程设计

python-3.x之pandas multiindex之如何在使用列时选择第二级

2024年09月07日39开发

我有一个带有此索引的数据框:

index = pd.MultiIndex.from_product([['stock1','stock2'...],['price','volume'...]]) 

这是一个有用的结构,可以做 df['stock1'] ,但如何选择所有价格数据?我无法理解文档。

我尝试了以下但没有运气: df[:,'price'] df[:]['price'] df.loc(axis=1)[:,'close'] df['price]
如果无论出于何种原因,这种索引样式都被普遍认为是一个坏主意,那么什么是更好的选择?我应该将股票的多指数指数作为时间序列的标签而不是列级别的标签吗?

非常感谢

编辑 - 我对列使用多索引,而不是索引(措辞对我来说更好)。文档中的示例侧重于多级索引而不是列结构。

请您参考如下方法:

还使用约翰的数据样本:

使用 xs()是另一种切片 MultiIndex 的方法:

df 
               0 
stock1 price   1 
       volume  2 
stock2 price   3 
       volume  4 
stock3 price   5 
       volume  6 
 
df.xs('price', level=1, drop_level=False) 
              0 
stock1 price  1 
stock2 price  3 
stock3 price  5 

或者,如果您有 MultiIndex代替列:
df 
  stock1        stock2        stock3        
   price volume  price volume  price volume 
0      1      2      3      4      5      6 
 
df.xs('price', axis=1, level=1, drop_level=False) 
  stock1 stock2 stock3 
   price  price  price 
0      1      3      5