假设您有一个这样的熊猫系列。
a = pd.Series(range(31),index = pd.date_range('2018-01-01','2018-01-31',freq='D'))
如果您要像这样用多索引创建分组依据数据框
data
date
2018-01-01 2018-01-01 0
2018-01-02 1
2018-01-03 2
2018-01-04 3
2018-01-05 4
2018-01-02 2018-01-02 1
2018-01-03 2
2018-01-04 3
2018-01-05 4
2018-01-06 5
2018-01-03 2018-01-03 2
2018-01-04 3
2018-01-05 4
2018-01-06 5
2018-01-07 6
.....
此数据显示在第一级多重索引中,它显示原始日期时间索引。在第二层中,我们将日期缩短为5天。 例如,如果第一级是2018-01-01,则第二级是2018-01-01至2018-01-05。 如果第一级是2018-01-15,第二级是2018-01-15至2018-01-19,数据是14、15、16、17、18。
如何制作没有循环的DataFrame或系列?
答案 0 :(得分:0)
使用-
import datetime as dt
first = np.repeat(a.index.values,5)
second = [ i + np.timedelta64(j,'D') for i in a.index for j in range(5)]
arrays = [first, second]
print(np.shape(second))
d=pd.DataFrame(index=pd.MultiIndex.from_arrays(arrays, names=('date1', 'date2')))
输出(d.head()
)
value
date1 date2
2018-01-01 2018-01-01 0.0
2018-01-02 1.0
2018-01-03 2.0
2018-01-04 3.0
2018-01-05 4.0
2018-01-02 2018-01-02 1.0
2018-01-03 2.0
2018-01-04 3.0
2018-01-05 4.0
2018-01-06 5.0