python-3.x - iloc 的索引器过多
问题描述
我正在尝试获得 1950 年至 1952 年的第 1 周至第 3 周的销售额。我可以使用以下代码通过 loc 来实现这一点
idx = pd.IndexSlice
df.loc[:,idx[:,1950:1952,'Week1':'Week3']]
但是当我试图通过 iloc 来做这件事时,我得到了太多的索引器错误。我正在使用这段代码:
df.iloc[:,idx[:,:4,:4]]
为什么 iloc 失败但为 loc 工作?
下面是我的数据框的列值。
df.columns
MultiIndex(levels=[['Sale'], [1950, 1951, 1952, 1953], ['Week1', 'Week2', 'Week3', 'Week4']],
labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3], [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]],
names=[None, 'Year', 'Week'])
解决方案
推荐阅读
- mysql - MySql查询运行余额校正
- python - 生成器表达式与生成器函数以及令人惊讶的急切评估
- xamarin - Xamarin 表单列表视图 - 显示图像全宽,自动高度
- knockout.js - Knockout Binding 问题,只能通过匿名函数获取值
- php - Auth guard [:api] 没有定义?
- google-apps-script - 使用 Google Apps 脚本删除或替换 Google 表格单元格中的“未定义”字符串
- python - PyTorch BERT TypeError: forward() got an unexpected keyword argument 'labels'
- reactjs - 将 Bulma Sass 与 Preact 集成
- php - 在 Twig 中获得最低值
- laravel - moment.js 在生产服务器上可用吗?