IPython笔记本中列的相邻行之间的差异

时间:2016-04-22 19:33:15

标签: python sql pandas

我在IPython中有一个查询,我根据MachineName,LocalIPAddress,SourceAddress和DateTime对数据框进行了分组,得到如下输出。

MachineName LocalIPAddress SourceAddress DateTime

BMTSAFT04 10.3.0.186“”2016-04-13 03:42:29.865

BMTSAFT04 10.3.0.186“”2016-04-13 08:48:33.005

BMTSAFT04 10.3.0.186“”2016-04-13 10:16:28.612

BMTSAFT04 10.3.0.186“”2016-04-13 10:31:33.343

BMTSAFT04 10.3.0.186“”2016-04-13 13:43:00.173

BMTSAFT04 10.3.0.186“”2016-04-13 20:02:11.610

BMTSYSP05 10.1.9.25 10.3.4.81 2016-04-13 06:08:53.584

BMTSYSP05 10.1.9.25 10.3.4.81 2016-04-13 12:01:57.563

现在,对于每个组,我必须找到组中相应行的日期时间之间的差异。

例如,在第一组中,我必须显示“2016-04-13 03:42:29.865”和“2016-04-13 08:48:33.005”之间的区别,“2016-04-13之间的区别08:48:33.005“和”2016-04-13 10:16:28.612“,”2016-04-13 10:16:28.612“和”2016-04-13 10:31:33.343“等。必须对表中的所有组进行此操作。

我是python的新手,我正在弄清楚如何实现这一目标。

任何帮助都将不胜感激!!

1 个答案:

答案 0 :(得分:0)

您可以使用pandas shift

In [5]: df
Out[5]: 
   a  b  c  d
0  1  2  3  4
1  4  5  6  7
2  2  4  6  8
3  3  2  1  4
4  0  1  2  4

In [6]: df['diff'] = df['d'] - df['d'].shift(-1)

In [7]: df
Out[7]: 
   a  b  c  d  diff
0  1  2  3  4    -3
1  4  5  6  7    -1
2  2  4  6  8     4
3  3  2  1  4     0
4  0  1  2  4   NaN