2017-02-27 14 views
0

にCSV日時の変換:私のcsvファイルのようにフォーマットされた日付が含ま整数

10/3/1946 0:00:00 
4/4/1947 0:00:00 

を私が過去に発生csvファイル内の値を知りたいのですが、12/18/1957 0:00:000が言いますか?

比較するには、数値に変換する必要があるとします。たとえば、10/3/1946 0:00:0017078.00となります。

これを行うための方法はありますか?

+1

なぜ実際に 'strptime'を使用して、日付時刻、すべてを比較しませんか? – miradulo

+0

私は、このようにする方が簡単だと思っていました。なぜなら、特定の日付以降、「経過日数」が必要なためです。 – DPdl

+1

あなたは 'strptime'で日付を変換し、' date1 - date2'の差分を計算することができます。 –

答えて

0

csvファイルの日付をdatetime形式に変換することをお勧めします。これは、文字列を取り出してstrptime()を使用して、datetimeオブジェクトに変換することによって行われます。この関数は、日付文字列がどのように書式設定されているかを伝えるための書式文字列を取ります。たとえば、%Yは、4桁の年を想定しています。

最初に作成したデータと比較する日時を作成します。 after_date。次のように2つの日付を比較することが可能である:

from datetime import datetime    
import csv 

after_date = datetime(1957, 12, 18) 
print "Entries after {}".format(after_date) 

with open('input.csv') as f_input: 
    for row in csv.reader(f_input): 
     row_date = datetime.strptime(row[0], "%m/%d/%Y %H:%M:%S") 

     if row_date >= after_date: 
      print "{} - {}".format(row[1], row_date) 

これはすなわちrow[0]最初の列にあると比較しようとしている日付を前提としています。だから、例えば、あなたが見えるcsvファイルがあった場合、:

10/3/1946 0:00:00,row1 
4/4/1947 0:00:00,row2 
4/4/1957 0:00:00,row3 
12/19/1957 0:00:00,row4 
1/1/1958 0:00:00,row5     

をスクリプトは、以下の情報を表示していました:

Entries after 1957-12-18 00:00:00 
row4 - 1957-12-19 00:00:00 
row5 - 1958-01-01 00:00:00  
関連する問題