2012-12-28 24 views
1

在我的数据中,我有订单序列和时间的库存量,我需要遍历订单的每个部分,并通过抓取链时间的下一部分来查找它的结束时间。groupby函数获取后续值

我刚刚开始使用python,我会通过将每个库存分配到它自己的池中,然后添加另一个循环来查找该序列的下一个订单的时间。最后,在R/Matlab中,你可以去X $ time [1:end-1] < - X $ time [2:end,]

我的问题是,我可以使用df.groupby ['sequence'] 。{为每个条目获取后续条目的时间}

我认为最后的()会给我整个序列的最后一个值,我想的是下一个序列开始时间/显示

我有一组类型:

sequence time 
a  1 
b  1 
a  3 
a  5 
b  2 

我想

sequence time nexttime 
a  1  3 
b  1  2 
a  3  5 
a  5  999 
b  2  999 

回答

4
In [24]: df 
Out[24]: 
    sequence time 
0  a  1 
1  b  1 
2  a  3 
3  a  5 
4  b  2 

In [25]: df['nexttime'] = df.groupby('sequence').time.shift(-1).fillna(999) 

In [26]: df 
Out[26]: 
    sequence time nexttime 
0  a  1   3 
1  b  1   2 
2  a  3   5 
3  a  5  999 
4  b  2  999 
+0

尼斯和简洁,我喜欢它! – Zelazny7

+0

哇谢谢,这是完美的! – DrewH