私は4日間は行けないという問題があります。私はpython noobieです。 私はPython 2.6でunixボックスに取り組んでいます...そして、numpy、pandasのような追加のリベラルはありません。python idの日付範囲からユニークな日付を検索
私がする必要があるのは、できるだけ下のファイルの行数を少なくすることです。したがって、同じ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|
が、それは多くの結果
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)
ファイルに書き込むことができます彼らはすでにsprited、フォームを提示するafregadedされている場合、行の18 milionsのような巨大でプリントアウト、行のリストが含まれています。そして私はどこにいたのですか? –