使用pandas获取每个唯一行项的时间差异

时间:2016-03-30 15:54:17

标签: python pandas

有人可以告诉我如何使用pandas来获取以下数据中每个唯一行的时差(df):

Round   Order   Date
1   1   2011.02.04 00:20:21
1   2   2011.02.04 00:25:11
1   3   2011.02.04 00:35:10
1   4   2011.02.04 00:47:10
2   1   2011.02.04 00:21:21
2   2   2011.02.04 00:31:11
2   3   2011.02.04 00:41:10

由于i列' Order'的顺序,时间差将是第4行中的日期值减去第1行中的日期值。所以我想到达此表(time_df):

Round   TimeDiff
1   26.39
2   19.39

2 个答案:

答案 0 :(得分:1)

我会这样做:

In [324]: df
Out[324]:
   Round  Order                Date
0      1      1 2011-02-04 00:20:21
1      1      2 2011-02-04 00:25:11
2      1      3 2011-02-04 00:35:10
3      1      4 2011-02-04 00:47:10
4      2      1 2011-02-04 00:21:21
5      2      2 2011-02-04 00:31:11
6      2      3 2011-02-04 00:41:10

In [325]: grp = df.groupby('Round')

In [327]: grp.Date.max()-grp.Date.min()
Out[327]:
Round
1   00:26:49
2   00:19:49
Name: Date, dtype: timedelta64[ns]

答案 1 :(得分:1)

您可以使用groupby与差异minmax

df['Date'] = pd.to_datetime(df['Date'], format='%Y.%m.%d %H:%M:%S')   
print df
   Round  Order                Date
0      1      1 2011-02-04 00:20:21
1      1      2 2011-02-04 00:25:11
2      1      3 2011-02-04 00:35:10
3      1      4 2011-02-04 00:47:10
4      2      1 2011-02-04 00:21:21
5      2      2 2011-02-04 00:31:11
6      2      3 2011-02-04 00:41:10

print df.groupby('Round')['Date'].apply(lambda x: x.max() - x.min())
Round
1   00:26:49
2   00:19:49
Name: Date, dtype: timedelta64[ns]