【问题标题】:Pandas dataframe multi-index selecting first index first element熊猫数据框多索引选择第一个索引第一个元素
【发布时间】:2019-03-25 03:28:55
【问题描述】:

这一定是一个简单的问题,但是对我来说切片 pandas 多索引数据帧需要花费太多时间。所以我寻求帮助。

我有一个这样的数据框:(不完整)

Product_Category  Category_001  Category_002  Category_003  Category_004  \
Warehouse Year                                                             
Whse_A    2011             NaN           NaN    108.000000           NaN   
          2012             NaN           NaN     70.685714           NaN   
          2013       10.086957           NaN     58.475138           NaN   
          2014       18.564516           NaN     71.526316           NaN   
          2015        7.125000           NaN     73.397260           NaN   
          2016        9.212121           NaN     65.900391           NaN   
Whse_C    2011       17.909091           NaN           NaN           NaN   
          2012       36.653374           NaN           NaN           NaN   
          2013       29.292553           NaN           NaN           NaN   
          2014       27.556098           NaN           NaN           NaN   
          2015       28.470356           NaN           NaN           NaN   
          2016       20.480734           NaN           NaN           NaN   
          2017             NaN           NaN           NaN           NaN   
Whse_J    2011       13.000000           NaN           NaN           NaN   
          2012       15.282823           NaN     33.446154           NaN   
          2013       15.574038           NaN     33.181518           NaN   
          2014       17.537404           NaN     23.289256           NaN   
          2015       17.950261           NaN     21.353760           NaN   
          2016       20.335565           NaN     32.150418           NaN   
          2017        7.250000           NaN           NaN           NaN 

它有两个索引列:仓库和年份。
它有 33 个原始列:Category_001 到 Category_33。

df1.index
MultiIndex(levels=[[2011, 2012, 2013, 2014, 2015, 2016, 2017], ['Whse_A', 'Whse_C', 'Whse_J', 'Whse_S']],
           codes=[[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]],
           names=['Year', 'Warehouse'])

我可以像这样分割 Warehouse 'Whse_A' 和 2011 年:

df.loc[('Whse_A',2011)]

但我正在努力如何为“Whse_A”选择所有年份?

相关链接: https://pandas-docs.github.io/pandas-docs-travis/user_guide/advanced.html

感谢您的帮助。

更新
一个想法是切片:

df.loc[('Whse_A',2011):('Whse_A',2017)]

但是,如果我们不知道开始和结束年份,我们可以这样做吗?

类似:

df.loc[('Whse_A',:)] 

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试.loc

    df.loc[['Whse_A']]
    

    【讨论】:

    • 我缺少小括号,非常感谢先生。
    • @astro123 yw :-) 快乐编码
    猜你喜欢
    • 2021-11-28
    • 2021-08-28
    • 2020-08-18
    • 2020-09-26
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    相关资源
    最近更新 更多