Name,USAF,NCDC,Date,HrMn,I,Type,Dir,Q,I,Spd,Q
OXNARD,723927,93110,19590101,0000,4,SAO,270,1,N,3.1,1,
OXNARD,723927,93110,19590101,0100,4,SAO,338,1,N,1.0,1,
OXNARD,723927,93110,19590101,0200,4,SAO,068,1,N,1.0,1,
OXNARD,723927,93110,19590101,0300,4,SAO,068,1,N,2.1,1,
OXNARD,723927,93110,19590101,0400,4,SAO,315,1,N,1.0,1,
OXNARD,723927,93110,19590101,0500,4,SAO,999,1,C,0.0,1,
....
OXNARD,723927,93110,19590102,0000,4,SAO,225,1,N,2.1,1,
OXNARD,723927,93110,19590102,0100,4,SAO,248,1,N,2.1,1,
OXNARD,723927,93110,19590102,0200,4,SAO,999,1,C,0.0,1,
OXNARD,723927,93110,19590102,0300,4,SAO,068,1,N,2.1,1,
這裏是在每行中的CSV文件存儲每小時風速(SPD)的一個片段。我想要做的是每天在csv文件中選擇所有小時風,並將它們存儲在臨時每日清單中,存儲當天的每小時值(如果沒有缺失值,則爲24)。然後,我將輸出當天的列表,爲第二天創建新的空列表,在第二天定位每小時的速度,輸出每日列表等等,直到文件結束。選擇內部循環某些日期爲.csv文件
我正在努力做一個好的方法來做到這一點。我想有一個想法是在第一行中讀取,確定日期(YYYY-MM-DD),然後在第i + 1行中讀取並查看該日期是否與日期i相匹配。如果他們匹配,那麼我們在同一天。如果他們不這樣做,那麼我們將在第二天進入。但我甚至不知道如何閱讀文件中的下一行...
任何建議來執行此方法或全新的(和更好的?!)方法是最受歡迎的。提前致謝!
obs_in = open(csv_file).readlines()
for i in range(1,len(obs_in)):
# Skip over the header lines
if not str(obs_in[i]).startswith("Identification") and not str(obs_in[i]).startswith("Name"):
name,usaf,ncdc,date,hrmn,i,type,dir,q,i2,spd,q2,blank = obs_in[i].split(',')
current_dt = datetime.date(int(date[0:4]),int(date[4:6]),int(date[6:8]))
current_spd = spd
# Read in next line's date: is it in the same day?
# If in the same day, then append spd into tmp daily list
# If not, then start a new list for the next day
有一個列表和存儲行,直到日期更改。當日期發生變化時,將列表中的內容轉儲到文件中,刷新列表,然後轉到 – yosukesabai 2011-12-17 22:02:24
,最後,是否希望有一大堆24行的文件,並且文件名變得像spd19590101.csv,spd19590102.csv等等? – yosukesabai 2011-12-17 22:20:18
如何在日期更改時標記?我不知道如何閱讀下一行,並提取該日期以查看它是否與上一行的日期不同。最終,我想每個日期(YYYYMMDD)24個值的列表,輸出該列表,然後移動到第二天,有一個新的空列表,填充新的列表與下24個值,輸出它... – N1B4 2011-12-17 22:38:27