Python 样本x数据框中每天有多个条目的天数

Python 样本x数据框中每天有多个条目的天数,python,pandas,Python,Pandas,我有一个数据帧,每天有多个时间索引项。我想对天数(如2天)进行采样和x,并将其向前迭代1天,直到天数范围结束。我怎样才能做到这一点 例如,如果每天有多个条目: datetime value 2015-12-02 12:02:35 1 2015-12-02 12:02:44 2 2015-12-03 12:39:05 4 2015-12-03 12:39:12 7 2015-12-04 14:27:41 2 2015-12-04

我有一个数据帧,每天有多个时间索引项。我想对天数(如2天)进行采样和x,并将其向前迭代1天,直到天数范围结束。我怎样才能做到这一点

例如,如果每天有多个条目:

 datetime             value
 2015-12-02 12:02:35    1
 2015-12-02 12:02:44    2
 2015-12-03 12:39:05    4
 2015-12-03 12:39:12    7
 2015-12-04 14:27:41    2
 2015-12-04 14:27:45    8
 2015-12-07 09:52:58    3
 2015-12-07 13:52:15    5
 2015-12-07 13:52:21    9
我想重复一次采集两天的样本

 2015-12-02 12:02:35    1
 2015-12-02 12:02:44    2
 2015-12-03 12:39:05    4
 2015-12-03 12:39:12    7
然后

 2015-12-04 14:27:41    2
 2015-12-04 14:27:45    8
 2015-12-07 09:52:58    3
 2015-12-07 13:52:15    5
 2015-12-07 13:52:21    9
任何帮助都将不胜感激

您可以使用:

#https://stackoverflow.com/a/6822773/2901002
from itertools import islice

def window(seq, n=2):
    "Returns a sliding window (of width n) over data from the iterable"
    "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result    
    for elem in it:
        result = result[1:] + (elem,)
        yield result


dfs = [df[df['datetime'].dt.day.isin(x)] for x in window(df['datetime'].dt.day.unique())]
print (dfs[0])
             datetime  value
0 2015-12-02 12:02:35      1
1 2015-12-02 12:02:44      2
2 2015-12-03 12:39:05      4
3 2015-12-03 12:39:12      7

print (dfs[1])
             datetime  value
2 2015-12-03 12:39:05      4
3 2015-12-03 12:39:12      7
4 2015-12-04 14:27:41      2
5 2015-12-04 14:27:45      8

谢谢,我知道你在这里做什么了。谢谢我可以假设您也可以使用deque实现吗?是的,这是另一种解决方案。在pandas中使用的是滚动,但它会聚合数据,因此在这里使用有点问题。我得到了每个月和年的所有相邻日期,例如02、03。有没有办法用日期而不是日期来实现这一点?您需要将
day
更改为
date
dfs=[df[df['datetime'].dt.date.isin(x)]用于窗口中的x(df['datetime'].dt.date.unique())
#https://stackoverflow.com/a/6822773/2901002
from itertools import islice

def window(seq, n=2):
    "Returns a sliding window (of width n) over data from the iterable"
    "   s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...                   "
    it = iter(seq)
    result = tuple(islice(it, n))
    if len(result) == n:
        yield result    
    for elem in it:
        result = result[1:] + (elem,)
        yield result


dfs = [df[df['datetime'].dt.day.isin(x)] for x in window(df['datetime'].dt.day.unique())]
print (dfs[0])
             datetime  value
0 2015-12-02 12:02:35      1
1 2015-12-02 12:02:44      2
2 2015-12-03 12:39:05      4
3 2015-12-03 12:39:12      7

print (dfs[1])
             datetime  value
2 2015-12-03 12:39:05      4
3 2015-12-03 12:39:12      7
4 2015-12-04 14:27:41      2
5 2015-12-04 14:27:45      8