2017-06-19 143 views
0

我有一個包含多年數據的csv文件,我需要計算兩個日期(最大日期和最小日期)之間的差異,所以我相信我應該提取最大日期和最短日期。如何獲取日期時間對象的最大值和最小值

這裏是我的數據:

timestamp,heure,lat,lon,impact,type 
2006-01-01 00:00:00,13:58:43,33.837,-9.205,10.3,1 
2006-01-02 00:00:00,00:07:28,34.5293,-10.2384,17.7,1 
2007-02-01 00:00:00,23:01:03,35.0617,-1.435,-17.1,2 
2007-02-02 00:00:00,01:14:29,36.5685,0.9043,36.8,1 
.... 
2011-12-31 00:00:00,05:03:51,34.1919,-12.5061,-48.9,1 

我繼續在我的代碼波紋管:

W=np.loadtxt(dataFile,delimiter=',',dtype={'names': ('datum','timestamp','lat','lon','amp','ty'), 
          'formats':('S10',  'S8' ,'f4' ,'f4' ,'f4','S3')}) 

day = datetime.strptime(W['datum'][0],'%Y-%m-%d') 
time=[] 
for i in range(W.size): 
timestamp = datetime.strptime(W['datum'][i]+' '+W['timestamp'][i],'%Y-%m-%d %H:%M:%S') 
Tempsfinal = max(timestamp) 
Tempsinitial = min(timestamp) 
interval=int((Tempsfinal- Tempsinitial)/6) 

所以,這樣我得到了錯誤:

datetime.datetime' object is not iterable

我怎樣才能繼續?

回答

1

max()min()僅適用於iterables類似列表。所以把所有的日期到一個列表中,然後調用maxmin同一名單上:

all_timestamps = [] 

for i in range(W.size): 
    try: 
     timestamp = datetime.strptime(W['datum'][i]+' '+W['timestamp'][i],'%Y-%m-%d %H:%M:%S') 
     all_timestamps.append(timestamp) # make a list of dates 
     # Tempsfinal = max(timestamp)     # ### 
     # Tempsinitial = min(timestamp)    # move this out of loop 
     # interval=int((Tempsfinal- Tempsinitial)/6) # ### 

    except ValueError,e: 
     print "error",e,"on line",i 

# get min/max 
Tempsfinal = max(all_timestamps) 
Tempsinitial = min(all_timestamps) 

interval = Tempsfinal-Tempsinitial 

print 'Start time: ', Tempsinitial 
print 'End time: ', Tempsfinal 
print 'interval: ', interval 

輸出:

Start time: 2006-01-01 13:58:43 
End time: 2011-12-31 05:03:51 
interval: 2189 days, 15:05:08 
+0

非常感謝你,這就是我一直在尋找的,你幫了我! –

相關問題