我有一个pandas dataframe df
Date SKU Balance
0 1/1/2017 X1 8
1 2/1/2017 X2 45
2 3/1/2017 X1 47
3 4/1/2017 X2 16
4 5/1/2017 X1 14
5 6/1/2017 X2 67
6 7/1/2017 X2 9
8 8/1/2017 X1 66
9 9/1/2017 X1 158
我想打破它并将其附加到列表中,以便列表中的每个项目都是数据框4天的集合
例如
列表[1]
Date SKU Balance
0 1/1/2017 X1 8
1 2/1/2017 X2 45
2 3/1/2017 X1 47
3 4/1/2017 X2 16
列表[2]
Date SKU Balance
0 2/1/2017 X2 45
1 3/1/2017 X1 47
2 4/1/2017 X2 16
3 5/1/2017 X1 14
目前,我只能通过以下代码为每个列表附加一天来实现
dr = pd.date_range('20170101','20170109')
list=[]
for d in dr:
list.append(df.loc[df.Date.isin([d])])
如上所述,如何将第1天的4天追加到一个列表中并将其循环到第2天,再添加4天的行等等。
非常感谢您的帮助
答案 0 :(得分:3)
您可以尝试使用np.roll
l=[]
a=df.index.values
for x in a:
l.append(df.loc[a[:4]])
a=np.roll(a,-1)
答案 1 :(得分:3)
将reindex
和np.r_
与列表理解结合使用:
l = [df.reindex(np.r_[i:i+4]) for i in range(len(df))]
答案 2 :(得分:0)
列表理解中的切片。
ls = [df.loc[i:i+3] for i in range(len(df))]