2017-03-25 28 views
1

我读的CSV到数据帧是这样的:差异从两列值成一列

import pandas as pd 

data = pd.read_csv('mydata.csv', encoding = 'ISO-8859-1') 

和数据框看起来是这样的:

first_time  second_time 

1 11/2/17 0:05 11/2/17 0:09 

2 12/2/17 0:40 12/2/17 0:17 

3 13/2/17 0:12 13/2/17 1:40 

,我想创建一个名为duration的新列,查找每行上两列的持续时间(分钟):

first_time  second_time duration 

1 11/2/17 0:05 11/2/17 0:09 4 

2 12/2/17 0:40 12/2/17 0:47 7 

3 13/2/17 0:12 13/2/17 1:40 88 

我怎么能有效地做到这一点?通常我会尝试解析日期,并提取时间值,但这看起来效率不高。

回答

2

您可以直接转换为datetime类型并在几分钟内计算三角洲:

import pandas as pd 

data = pd.DataFrame({'first_time': ['11/2/17 0:05', '12/2/17 0:40', '13/2/17 0:12'], 
        'second_time': ['11/2/17 0:09', '12/2/17 0:47', '13/2/17 1:40']}) 

data['duration'] = pd.to_datetime(data['second_time']) - pd.to_datetime(data['first_time']) 
data['duration'] = data['duration'].astype('timedelta64[m]') 

哪位能给:

 first_time second_time duration 
0 11/2/17 0:05 11/2/17 0:09  4.0 
1 12/2/17 0:40 12/2/17 0:47  7.0 
2 13/2/17 0:12 13/2/17 1:40  88.0 
+0

谢谢主席先生!如果first_time是'31/1/16 23:43',second_time是'1/2/16 0:06',则会产生一个否定答案。他们是解决这个问题的一种方法,只有正面的持续时间? – RoadRunner

+1

别担心,我在'to_datetime()'调用中添加了'format ='%d /%m /%y%H:%M'',现在它工作正常。再次感谢 :) – RoadRunner