2017-03-25 26 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