迭代pandas数据帧并附加到列表中

时间:2018-05-18 03:12:05

标签: list pandas loops dataframe append

我有一个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天的行等等。

非常感谢您的帮助

3 个答案:

答案 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)

reindexnp.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))]