<p>您可以利用数据文件的有序性并使用<code>csv.dictreader</code>。然后你可以建立一个按日期组织的风速字典,你可以随意处理。请注意,csv读取器返回字符串,因此您可能希望在组装列表时根据需要转换为其他类型。在</p>
<pre><code>import csv
from collections import defaultdict
bydate = defaultdict(list)
rdr = csv.DictReader(open('winds.csv','rt'))
for k in rdr:
bydate[k['Date']].append(float(k['Spd']))
print(bydate)
defaultdict(<type 'list'>, {'19590101': [3.1000000000000001, 1.0, 1.0, 2.1000000000000001, 1.0, 0.0], '19590102': [2.1000000000000001, 2.1000000000000001, 0.0, 2.1000000000000001]})
</code></pre>
<p>显然,您可以更改元组的<code>append</code>调用的参数,例如<code>append((float(k['Spd']), datetime.datetime.strptime(k['Date']+k['HrMn'],'%Y%m%D%H%M))</code>,这样您也可以收集时间。在</p>
<p>如果文件有多余的空格,可以使用<code>skipinitialspace</code>参数:<code>rdr = csv.DictReader(open('winds.csv','rt'), fieldnames=ff, skipinitialspace=True)</code>。如果仍然不起作用,可以预处理标题行:</p>
^{pr2}$
<p><code>bydate</code>的访问方式与普通词典类似。要访问某一天的数据,请执行<code>bydate['19590101']</code>。要获取已处理的日期列表,可以执行<code>bydate.keys()</code>。在</p>
<p>如果要在读取文件时将它们转换为Python日期时间对象,可以导入<code>datetime</code>,然后将赋值行替换为<code>bydate[datetime.datetime.strptime(k['Date'], '%Y%m%d')].append(k['Spd'])</code>。在</p>