我有問題,我無法通過4天。我是蟒蛇noobie。 我正在使用python 2.6的unix box ...並且沒有像numpy,pandas這樣的額外自由度。python從日期範圍中找到唯一日期編號爲
我需要做的是儘可能少的文件行數。所以,當相同的id1,id2的日期範圍中的日期相互覆蓋時,他們需要被覆蓋。但是,正如你所期望的那樣,輸出中的最小值和最大值是不夠的,因爲有些日期不是日復一日。
輸入
ID1|IDTYPE2|20160802|20160912|
ID1|IDTYPE2|20160803|20160913|
ID1|IDTYPE2|20160804|20160914|
ID1|IDTYPE2|20160805|20160915|
ID1|IDTYPE2|20160808|20160916|
ID1|IDTYPE2|20160925|20160925|
ID2|IDTYPE2|20160925|20160925|
期望輸出
ID1|IDTYPE2|20160802|20160916|
ID1|IDTYPE2|20160925|20160925|
ID2|IDTYPE2|20160925|20160925|
我都試過了,但它gaves我許多成果
f = open(filename, 'rU')
outf = open(filename + '_date_diff', 'w')
dict_of_ID_dates = defaultdict(list)
for line in f:
columns = line.split("|")
ID1 = (columns[0])
IDType2 = (columns[1])
start = (columns[2])
end = (columns[3])
start_date = datetime.datetime.strptime(start,'%Y%m%d').date()
end_date = datetime.datetime.strptime(end,'%Y%m%d').date()
diff = end_date - start_date
list_of_dates =[]
date_ranges = range(diff.days +1)
# [0,1,2,3]
for date in date_ranges:
dates = (start_date + datetime.timedelta(date)).isoformat()
# [datetime format dates = '20160101']
if dates not in dict_of_ID_dates.values():
dict_of_ID_dates[ID].append(dates)
print (dict_of_ID_dates)
文件是巨大的像18個milions行的時候,他們已經拼合和afregaded呈現形式。上面我添加了我卡住的地方。 –