这肯定是一个简单的问题,但是为我分割一个熊猫的多索引数据帧花费了太多时间。所以我寻求帮助。
我有一个这样的数据框:(不完整)
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'])
我可以像这样对仓库“ 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',:)]
答案 0 :(得分:1)
尝试使用.loc
df.loc[['Whse_A']]