Python 时间增量

Python 时间增量,python,pandas,Python,Pandas,我有以下文件(df_SOF1.csv),它有一百万条记录长 Location,Transport,Transport1,DateOccurred,CostCentre,D_Time,count 0,Lorry,Car,07/09/2012,0,0:00:00,2 1,Lorry,Car,11/09/2012,0,0:00:00,5 2,Lorry,Car,14/09/2012,0,0:00:00,30 3,Lorry,Car,14/09/2012,0,0:07:00,2 4,Lorry,Car,

我有以下文件(
df_SOF1.csv
),它有一百万条记录长

Location,Transport,Transport1,DateOccurred,CostCentre,D_Time,count
0,Lorry,Car,07/09/2012,0,0:00:00,2
1,Lorry,Car,11/09/2012,0,0:00:00,5
2,Lorry,Car,14/09/2012,0,0:00:00,30
3,Lorry,Car,14/09/2012,0,0:07:00,2
4,Lorry,Car,14/09/2012,0,0:29:00,1
5,Lorry,Car,14/09/2012,0,3:27:00,3
6,Lorry,Car,14/09/2012,0,3:28:00,4
7,Lorry,Car,21/09/2012,0,0:00:00,13
8,Lorry,Car,27/09/2012,0,0:00:00,8
9,Lorry,Car,28/09/2012,0,0:02:00,1
10,Train,Bus,03/09/2012,2073,7:49:00,1
11,Train,Bus,05/09/2012,2073,7:50:00,1
12,Train,Bus,06/09/2012,2073,7:52:00,1
13,Train,Bus,07/09/2012,2073,7:48:00,1
14,Train,Bus,08/09/2012,2073,7:55:00,1
15,Train,Bus,11/09/2012,2073,7:49:00,1
16,Train,Bus,12/09/2012,2073,7:52:00,1
17,Train,Bus,13/09/2012,2073,7:50:00,1
18,Train,Bus,14/09/2012,2073,7:54:00,1
19,Train,Bus,18/09/2012,2073,7:51:00,1
20,Train,Bus,19/09/2012,2073,7:50:00,1
21,Train,Bus,20/09/2012,2073,7:51:00,1
22,Train,Bus,21/09/2012,2073,7:52:00,1
23,Train,Bus,22/09/2012,2073,7:53:00,1
24,Train,Bus,23/09/2012,2073,7:49:00,1
25,Train,Bus,24/09/2012,2073,7:54:00,1
26,Train,Bus,25/09/2012,2073,7:55:00,1
27,Train,Bus,26/09/2012,2073,7:53:00,1
28,Train,Bus,27/09/2012,2073,7:55:00,1
29,Train,Bus,28/09/2012,2073,7:53:00,1
30,Train,Bus,29/09/2012,2073,7:56:00,1
我用熊猫来分析,我已经试了至少40个小时了 找到一种方法来对数据进行分组,以便我可以聚合时间列
D\u time

我已经加载了所需的模块 我使用
dateoccurrend
作为索引创建了一个数据框,如下所示

df_SOF1 = read_csv('/users/fabulous/documents/df_SOF1.csv', index_col=3, parse_dates=True) # read file from disk
我可以按任何列分组,也可以遍历任何行

df_SOF1.groupby('Location').sum()
但是,我还没有找到一种方法来总结并使用pandas来计算
D_Time
列的平均值。我已经阅读了20多篇关于时间三角洲等的文章,但我仍然不知道如何在熊猫身上做到这一点

任何能让我在
D_Time
列上做算术运算的解决方案都将不胜感激。(即使必须在熊猫之外进行)

我认为一个可能的解决方案是将
D_Time
列更改为秒。 \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\u2012/11/01 我对上面的30项运行了以下命令

df_SOF1.groupby('Transport').agg({'D_Time':sum})

运输
卡车0:00:000:00:000:00:000:07:000:29:003:27:003:28。。。 列车7:49:007:50:007:52:007:48:007:55:007:49:007:52

它似乎将这些值物理地相加,而不是给出一个数字和(如添加字符串)


干杯

我在pandas中没有发现任何关于deltatime的内容,datetime模块有一个,所以将D_时间转换为秒不是个坏主意:

def seconds(time_str):
    end_time = datetime.datetime.strptime(time_str,'%H:%M:%S')
    delta = end_time - datetime.datetime.strptime('0:0:0','%H:%M:%S')
    return delta.total_seconds()


df_SOF1.D_Time = df_SOF1.D_Time.apply(seconds)
结果:

>>> df_SOF1.groupby('CostCentre').sum()
            Location  D_Time  count
CostCentre                         
0                 45   27180     69
2073             420  594660     21
将datetime.datetime.StrTime('0:0:0','%H:%M:%S')移动到全局命名空间可以减少执行时间:

timeit.timeit("sec('01:01:01')", setup="from __main__ import sec",
              number=10000)
1.025843858718872

timeit.timeit("seconds('01:01:01')", setup="from __main__ import seconds",
              number=10000)
0.6128969192504883 

这是一个有趣的问题标题,你有。我有点累时提出的问题哈哈!您能否提供一个示例:取3行,显示您正在尝试执行的操作以及预期的结果(提供特定的输出)。我不明白
'7:53:00'+'7:56:00'
可能意味着什么。你是如何发现大熊猫与一百万张唱片合作的?我也有一个大的数据集,仅仅阅读文件就要花很长时间…非常感谢,看起来很好,我会尝试一下,现在让你知道我进展如何。英雄联盟您好,adray,我运行了上面的函数,但在AttributeError下面出现了上面的错误:type object'datetime.datetime'没有属性'datetime',我相信它与导入datatime有关。我正在运行python 2.7。如何导入datetime模块。关于GeorgeSeems,您执行了“从日期时间导入日期时间”。只需执行“导入日期时间”,它来自标准库,所以这应该不是问题。你可以“dir(datetime)”来检查可用的方法。我也需要导入时间,谢谢你的帮助:o)我已经接受了这个答案,我的程序正在运行!
timeit.timeit("sec('01:01:01')", setup="from __main__ import sec",
              number=10000)
1.025843858718872

timeit.timeit("seconds('01:01:01')", setup="from __main__ import seconds",
              number=10000)
0.6128969192504883