按标签元组选择二级索引



我在('dt', 'product_id')上有一些销售数据索引,如下所示:

In [43]: sub.head()
Out[43]:
                           income
dt          product_id
2015-01-15  10016          23
2015-01-15  10017          188
2015-01-15  10018          NaN
2015-01-16  10016          188
2015-01-17  10025         1000
# this goes on and on...

如何查看产品10016100252015-01-152015-01-16之间的收益?

In [44]: sub.loc[idx[start:end,[10016,10018]]]
KeyError: 'None of [[10055, 10158]] are in the [columns]'
<标题> 原始数据
import pandas as pd
product_order = pd.DataFrame.from_csv('order.csv')
odr = product_order.set_index(['dt','product_id'])
dt,product_id,subsidy
2015-03-03 00:39:08+08:00,10029,50.00
2015-03-09 00:47:00+08:00,10016,55.00
2015-03-13 01:00:12+08:00,10029,23.00
2015-03-15 01:03:40+08:00,10016,21.00
2015-03-16 02:18:45+08:00,10016,52.00

假设gp已经是您的groupby对象,您可以像下面这样切片:

In [146]:
idx = pd.IndexSlice
gp.loc[idx['2015-01-15':'2015-01-16'], idx[10016:10025]]
Out[146]:
dt          product_id
2015-01-15  10016          23
            10017         188
            10018         NaN
2015-01-16  10016         188
Name: income, dtype: float64

所以你需要为每一层定义一个IndexSlice你想在

上执行行选择标准

最新更新