我想对数据数组进行多索引。 最初,我使用日期时间索引我的数据,但是对于某些更高版本的应用程序,我不得不添加另一个数字索引(从len(array)-1的0开始)。
我已经写了几行:
O = [0.701733664614, 0.699495411782, 0.572129320819, 0.613315597684, 0.58079660603, 0.596638918579, 0.48453382119]
Ab = [datetime.datetime(2018, 12, 11, 14, 0), datetime.datetime(2018, 12, 21, 10, 0), datetime.datetime(2018, 12, 21, 14, 0), datetime.datetime(2019, 1, 1, 10, 0), datetime.datetime(2019, 1, 1, 14, 0), datetime.datetime(2019, 1, 11, 10, 0), datetime.datetime(2019, 1, 11, 14, 0)]
tst = pd.Series(O,index=Ab)
ld = len(tst)
index = pd.MultiIndex.from_product([(x for x in range(0,ld)),Ab], names=['id','dtime'])
print (index)
data = pd.Series(O,index=index)
但是当打印 index 时,我得到一些奇怪的“代码”: 级别和名称是完美的,但是代码从0到763 ... 764次(而不是1次)!
我尝试添加 set_codes 命令:
index.set_codes([x for x in range(0,ld)], level=0)
print (index)
我自负,有以下错误:
ValueError:不相等的代码长度:[764,583696]
最初的熊猫系列:
打印(tst)
2005-01-01 14:00:00 0.544177
2005-01-01 14:00:00 0.544177
2005-01-21 14:00:00 0.602239
...
2019-05-21 10:00:00 0.446813
2019-05-21 14:00:00 0.466573
长度:764,dtype:float64
新的预期目标
id dtime
0 2005-01-01 14:00:00 0.544177
1 2005-01-01 14:00:00 0.544177
2 2005-01-21 14:00:00 0.602239
...
762 2019-05-21 10:00:00 0.446813
763 2019-05-21 14:00:00 0.466573
预先感谢
答案 0 :(得分:1)
您可以通过MultiIndex.from_arrays
创建新索引,然后重新分配给Series
:
s.index = pd.MultiIndex.from_arrays([np.arange(len(s)), s.index], names=['id','dtime'])