Python 如何将数据帧转换为多索引数据帧
我有一个时间序列数据帧,我想把它转换成一列的多索引数据帧 以下是数据帧:Python 如何将数据帧转换为多索引数据帧,python,python-3.x,pandas,time-series,multi-index,Python,Python 3.x,Pandas,Time Series,Multi Index,我有一个时间序列数据帧,我想把它转换成一列的多索引数据帧 以下是数据帧: Date MMM ABT ABBV ABMD 20171017 -0.004455 0.007810 0.012260 0.011132 20171018 0.002382 0.012731 0.040296 0.002775 20171019 0.004424 0.004107
Date MMM ABT ABBV ABMD
20171017 -0.004455 0.007810 0.012260 0.011132
20171018 0.002382 0.012731 0.040296 0.002775
20171019 0.004424 0.004107 0.004561 -0.00429
20171020 0.009398 0.005682 -0.003954 0.013801
我尝试了以下代码:
for date in returns.index:
arrays = [[[date] * len(returns.columns)][0],
list(returns.columns)]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
multi.loc[(date,np.array(index.levels[1])),:] =
returns.loc[date,:].values.reshape(-1,1)
但是,我得到以下错误:
TypeError: unhashable type: 'numpy.ndarray'
我希望:
Returns
20171017 MMM -0.004455
ABT 0.007810
ABBV 0.012260
ABMD 0.011132
ACN -0.003173
ATVI 0.002919
ADBE -0.000532
AMD -0.007062
AAP 0.023612
AES -0.007149
AMG -0.007792
AFL -0.005014
A -0.011948
APD 0.001629
AKAM -0.002966
ALK 0.000621
用于具有多索引的系列,必要时可用于单列数据帧添加:
用于具有多索引的系列,必要时可用于单列数据帧添加:
使用+。然后使用重命名序列。最后使用以下命令转换为数据帧:
使用+。然后使用重命名序列。最后使用以下命令转换为数据帧:
df = df.set_index('Date').stack().to_frame('Returns')
print (df)
Returns
Date
20171017 MMM -0.004455
ABT 0.007810
ABBV 0.012260
ABMD 0.011132
20171018 MMM 0.002382
ABT 0.012731
ABBV 0.040296
ABMD 0.002775
20171019 MMM 0.004424
ABT 0.004107
ABBV 0.004561
ABMD -0.004290
20171020 MMM 0.009398
ABT 0.005682
ABBV -0.003954
ABMD 0.013801
df.set_index('Date').stack().rename('returns').to_frame()
returns
Date
20171017 MMM -0.004455
ABT 0.007810
ABBV 0.012260
ABMD 0.011132
20171018 MMM 0.002382
ABT 0.012731
ABBV 0.040296
ABMD 0.002775
20171019 MMM 0.004424
ABT 0.004107
ABBV 0.004561
ABMD -0.004290
20171020 MMM 0.009398
ABT 0.005682
ABBV -0.003954
ABMD 0.013801