Python “取消堆栈”和“设置索引”后的切片`

Python “取消堆栈”和“设置索引”后的切片`,python,pandas,numpy,Python,Pandas,Numpy,我有一个关于使用unstack后的切片的简单问题 我的纵向/面板数据集采用下面的长文件格式。问题下面是数据输入代码 time x y USA 1 5 10 USA 2 5 12 USA 3 6 13 CAN 1 2 2 CAN 2 2 3 CAN 3 4 5 然后,我将数据解压缩到一个按时间索引的文件中,如下所示: df1 = df.reset_index().set_index(['time','index']).unstack(-1

我有一个关于使用unstack后的切片的简单问题

我的纵向/面板数据集采用下面的长文件格式。问题下面是数据输入代码

    time x  y
USA 1    5  10
USA 2    5  12
USA 3    6  13
CAN 1    2  2
CAN 2    2  3
CAN 3    4  5
然后,我将数据解压缩到一个按时间索引的文件中,如下所示:

df1 = df.reset_index().set_index(['time','index']).unstack(-1)
print(df1)

        x       y    
index CAN USA CAN USA
time                 
1       2   5   2  10
2       2   5   3  12
3       4   6   5  13
现在,我想根据时间对widefile df1进行切片,以便:

列车包含t==1和t==2 测试包含t==3。 我试过这个:

train = df1[(df.time=='1')|(df.time=='2')]
这是:

train = df1[(df.time==1)|(df.time==2)]
但两者都有错误

我期望的输出是:

训练

及 试验

数据输入代码 第一次是索引名,所以它不再是索引列,我们需要使用。index,第二次你需要使用df1而不是df

        x       y    
index CAN USA CAN USA
time                 
1       2   5   2  10
2       2   5   3  12
        x       y    
index CAN USA CAN USA
time                 
3       4   6   5  13
import numpy as np
import pandas as pd

data = np.array([['country','time','x','y'],
                ['USA',1, 5, 10],
                ['USA',2, 5, 12],
                ['USA',3,6, 13],
                ['CAN',1,2, 2],
                ['CAN',2,2, 3],
                ['CAN',3,4, 5]],                
               )
                
df = pd.DataFrame(data=data[1:,1:],
                  index=data[1:,0],
                  columns=data[0,1:])

df
train = df1[df1.index.isin([1,2])]
train
Out[219]: 
        x       y    
index CAN USA CAN USA
time                 
1       2   5   2  10
2       2   5   3  12