首页 > 解决方案 > iloc 的索引器过多

问题描述

我有一个看起来像这样的数据框(df) 在此处输入图像描述

我正在尝试获得 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'])

标签: python-3.xpandasdataframe

解决方案


推荐阅读