Python “取消堆栈”和“设置索引”后的切片`
我有一个关于使用unstack后的切片的简单问题 我的纵向/面板数据集采用下面的长文件格式。问题下面是数据输入代码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
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