Python 样本x数据框中每天有多个条目的天数
我有一个数据帧,每天有多个时间索引项。我想对天数(如2天)进行采样和x,并将其向前迭代1天,直到天数范围结束。我怎样才能做到这一点 例如,如果每天有多个条目: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
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