2017-03-27 10 views
1

セッションの開始時間と終了時間を含むCSVファイルがあります。TimeDate列を減算する

私がどのようにできるか理解したいと思います。終了時間 - セッションの継続時間を取得するための開始時間。

これまでのところ私はこれを持って、それは

start_time = "2016-11-09 18:06:17" 
end_time ="2016-11-09 18:21:07" 
start_dt = dt.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') 
end_dt = dt.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S') 

diff = (end_dt - start_dt) 
duration = diff.seconds/60 
print (duration) 

に動作しますが、私は一度に列全体のためにそれをやってみたいです。

答えて

1

csvからインポートして日付を操作するには、​​があります。あなたのデータについてあなたが与えた唯一の情報は開始時刻と終了時刻なので、私はそれを表示します。

コード:

import pandas as pd 
df = pd.read_csv(data, parse_dates=['start_time', 'end_time'], 
       infer_datetime_format=True) 
print(df) 

df['time_delta'] = df.end_time.values - df.start_time.values 
print(df.time_delta) 

試験データ:

from io import StringIO 

data = StringIO(u'\n'.join([x.strip() for x in """ 
    start_time,end_time,a_number 
    2013-09-19 03:00:00,2013-09-19 04:00:00,221.0797 
    2013-09-19 04:00:00,2013-09-19 05:00:00,220.5083 
    2013-09-24 03:00:00,2013-09-24 05:00:00,221.7733 
    2013-09-24 04:00:00,2013-09-24 06:00:00,221.2493 
""".split('\n')[1:-1]])) 

結果:

  start_time   end_time a_number 
0 2013-09-19 03:00:00 2013-09-19 04:00:00 221.0797 
1 2013-09-19 04:00:00 2013-09-19 05:00:00 220.5083 
2 2013-09-24 03:00:00 2013-09-24 05:00:00 221.7733 
3 2013-09-24 04:00:00 2013-09-24 06:00:00 221.2493 

0 01:00:00 
1 01:00:00 
2 02:00:00 
3 02:00:00 
Name: time_delta, dtype: timedelta64[ns] 
+0

スティーブンス、実行時にこのエラーが発生する... TypeError:parser_f()に予期しないキーワード引数 'infer_datetime_format'がある – Silas

+0

使用しているパンダのバージョンは何ですか? –

+0

0.12.0これはバージョン – Silas

0

datetime値ではなく文字列に対してdiffを実行しようとしているようです。

どうやってこのようなことができますか?

from datetime import datetime 

start_time = datetime(2016, 11, 12, 18, 06, 17) 
end_time = datetime(2016, 11, 09, 18, 21, 07) 
diff = end_time - start_time 
print(diff.seconds/60) 

私はこれがうまくいくと思います。

+0

ねえリックは、ノーコードは、私は細かい作品を掲載、私長いstart_timeとend_timeの日付と時刻のリスト。一度にやり直して新しい列を作るにはどうすればいいですか? – Silas

+0

こんにちはシラス、私に知らせてくれてありがとう...私はそれが働いていなかった。ごめんなさい。しかし、Stephen Rauchさんが面白い答えをくれたようです。誤解して申し訳ありません。 – Rick